diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..719dd61 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +trim_trailing_whitespace = true +insert_final_newline = true + +[*.svg] +insert_final_newline = false diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..4b0ad00 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + "parserOptions": { + "ecmaVersion": 2022, + "sourceType": "module" + }, + "env": { + "es2022": true, + "browser": true + }, + "globals": { + "noUiSlider": "readonly", + "Pristine": "readonly" + }, + "extends": "htmlacademy/vanilla" +} diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..7d233b9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +* text eol=lf + +*.ico binary +*.png binary +*.jpg binary +*.jpeg binary +*.webp binary +*.avif binary +*.woff binary +*.woff2 binary diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 0000000..f2458ff --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,40 @@ +name: Project check + +on: + push: + branches: + - master + pull_request: + branches: + - '*' + +jobs: + check: + name: Check + + runs-on: ubuntu-latest + + steps: + + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version-file: 'package.json' + + - name: Restore cache + uses: actions/cache@v3 + with: + path: ~/.npm + key: cache-npm-${{ hashFiles('./package-lock.json') }} + restore-keys: cache-npm- + + - name: Install dependencies + run: npm ci + + - name: Run checks + run: npm run lint + env: + FORCE_COLOR: true diff --git a/.github/workflows/gh-pages-on-pr.yml b/.github/workflows/gh-pages-on-pr.yml new file mode 100644 index 0000000..d49379d --- /dev/null +++ b/.github/workflows/gh-pages-on-pr.yml @@ -0,0 +1,47 @@ +name: Deploy on pull request + +on: + pull_request_target: + branches: + - '*' + +jobs: + deploy-on-pull-request: + name: Deploy on Pull Request + + permissions: + contents: write + + runs-on: ubuntu-latest + + steps: + + - name: Checkout + uses: actions/checkout@v4 + with: + ref: 'refs/pull/${{ github.event.pull_request.number }}/merge' + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version-file: 'package.json' + + - name: Restore cache + uses: actions/cache@v3 + with: + path: ~/.npm + key: cache-npm-${{ hashFiles('./package-lock.json') }} + restore-keys: cache-npm- + + - name: Install dependencies + run: npm ci + + - name: Build project + run: npm run build + + - name: Deploy + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: ./build + branch: gh-pages + target-folder: ${{ github.event.pull_request.number }} diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml new file mode 100644 index 0000000..d6ad03a --- /dev/null +++ b/.github/workflows/gh-pages.yml @@ -0,0 +1,44 @@ +name: Deploy to GitHub-Pages + +on: + push: + branches: + - master + +jobs: + deploy: + name: Deploy + + permissions: + contents: write + + runs-on: ubuntu-latest + + steps: + + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version-file: 'package.json' + + - name: Restore cache + uses: actions/cache@v3 + with: + path: ~/.npm + key: cache-npm-${{ hashFiles('./package-lock.json') }} + restore-keys: cache-npm- + + - name: Install dependencies + run: npm ci + + - name: Build project + run: npm run build + + - name: Deploy + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: ./build + branch: gh-pages diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..96dc29d --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +node_modules +build +.idea +.DS_Store +raw/**/*.jpg +raw/**/*.jpeg +raw/**/*.png +raw/**/*.svg +!raw/**/README.md diff --git a/.linthtmlrc b/.linthtmlrc new file mode 100644 index 0000000..4119329 --- /dev/null +++ b/.linthtmlrc @@ -0,0 +1,3 @@ +{ + "extends": "linthtml-config-htmlacademy" +} diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 0000000..ef6663d --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,3 @@ +{ + "extends": "stylelint-config-htmlacademy" +} diff --git a/assets/git.png b/assets/git.png new file mode 100644 index 0000000..f0105f4 Binary files /dev/null and b/assets/git.png differ diff --git a/assets/node.png b/assets/node.png new file mode 100644 index 0000000..cf92a58 Binary files /dev/null and b/assets/node.png differ diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 0000000..f4988cd Binary files /dev/null and b/docs/favicon.ico differ diff --git a/docs/favicons/supergym-apple-favicon-180x180.png b/docs/favicons/supergym-apple-favicon-180x180.png new file mode 100644 index 0000000..fe026c9 Binary files /dev/null and b/docs/favicons/supergym-apple-favicon-180x180.png differ diff --git a/docs/favicons/supergym-favicon-32x32.png b/docs/favicons/supergym-favicon-32x32.png new file mode 100644 index 0000000..23f2016 Binary files /dev/null and b/docs/favicons/supergym-favicon-32x32.png differ diff --git a/docs/favicons/supergym-favicon.svg b/docs/favicons/supergym-favicon.svg new file mode 100644 index 0000000..acd4874 --- /dev/null +++ b/docs/favicons/supergym-favicon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/favicons/supergym-icon180.png b/docs/favicons/supergym-icon180.png new file mode 100644 index 0000000..fe026c9 Binary files /dev/null and b/docs/favicons/supergym-icon180.png differ diff --git a/docs/favicons/supergym-icon192.png b/docs/favicons/supergym-icon192.png new file mode 100644 index 0000000..683ec63 Binary files /dev/null and b/docs/favicons/supergym-icon192.png differ diff --git a/docs/favicons/supergym-icon256.png b/docs/favicons/supergym-icon256.png new file mode 100644 index 0000000..c45f921 Binary files /dev/null and b/docs/favicons/supergym-icon256.png differ diff --git a/docs/favicons/supergym-icon512.png b/docs/favicons/supergym-icon512.png new file mode 100644 index 0000000..bac16a7 Binary files /dev/null and b/docs/favicons/supergym-icon512.png differ diff --git a/docs/fonts/alumni-sans-extra-bold.woff2 b/docs/fonts/alumni-sans-extra-bold.woff2 new file mode 100644 index 0000000..00cab50 Binary files /dev/null and b/docs/fonts/alumni-sans-extra-bold.woff2 differ diff --git a/docs/fonts/alumni-sans-semi-bold.woff2 b/docs/fonts/alumni-sans-semi-bold.woff2 new file mode 100644 index 0000000..a2f46a6 Binary files /dev/null and b/docs/fonts/alumni-sans-semi-bold.woff2 differ diff --git a/docs/fonts/roboto-condensed-bold.woff2 b/docs/fonts/roboto-condensed-bold.woff2 new file mode 100644 index 0000000..666ef2c Binary files /dev/null and b/docs/fonts/roboto-condensed-bold.woff2 differ diff --git a/docs/fonts/roboto-condensed-light.woff2 b/docs/fonts/roboto-condensed-light.woff2 new file mode 100644 index 0000000..8fb8326 Binary files /dev/null and b/docs/fonts/roboto-condensed-light.woff2 differ diff --git a/docs/fonts/roboto-condensed-regular.woff2 b/docs/fonts/roboto-condensed-regular.woff2 new file mode 100644 index 0000000..ddfeeea Binary files /dev/null and b/docs/fonts/roboto-condensed-regular.woff2 differ diff --git a/docs/icons/stack.svg b/docs/icons/stack.svg new file mode 100644 index 0000000..b0048f5 --- /dev/null +++ b/docs/icons/stack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/images/abonements-bumper-disks-desktop@1x.png b/docs/images/abonements-bumper-disks-desktop@1x.png new file mode 100644 index 0000000..906799c Binary files /dev/null and b/docs/images/abonements-bumper-disks-desktop@1x.png differ diff --git a/docs/images/abonements-bumper-disks-desktop@1x.webp b/docs/images/abonements-bumper-disks-desktop@1x.webp new file mode 100644 index 0000000..70a105a Binary files /dev/null and b/docs/images/abonements-bumper-disks-desktop@1x.webp differ diff --git a/docs/images/abonements-bumper-disks-desktop@2x.png b/docs/images/abonements-bumper-disks-desktop@2x.png new file mode 100644 index 0000000..af5f580 Binary files /dev/null and b/docs/images/abonements-bumper-disks-desktop@2x.png differ diff --git a/docs/images/abonements-bumper-disks-desktop@2x.webp b/docs/images/abonements-bumper-disks-desktop@2x.webp new file mode 100644 index 0000000..78ddabd Binary files /dev/null and b/docs/images/abonements-bumper-disks-desktop@2x.webp differ diff --git a/docs/images/abonements-bumper-disks-tablet@1x.png b/docs/images/abonements-bumper-disks-tablet@1x.png new file mode 100644 index 0000000..7b0c8d5 Binary files /dev/null and b/docs/images/abonements-bumper-disks-tablet@1x.png differ diff --git a/docs/images/abonements-bumper-disks-tablet@1x.webp b/docs/images/abonements-bumper-disks-tablet@1x.webp new file mode 100644 index 0000000..824c803 Binary files /dev/null and b/docs/images/abonements-bumper-disks-tablet@1x.webp differ diff --git a/docs/images/abonements-bumper-disks-tablet@2x.png b/docs/images/abonements-bumper-disks-tablet@2x.png new file mode 100644 index 0000000..c9c283b Binary files /dev/null and b/docs/images/abonements-bumper-disks-tablet@2x.png differ diff --git a/docs/images/abonements-bumper-disks-tablet@2x.webp b/docs/images/abonements-bumper-disks-tablet@2x.webp new file mode 100644 index 0000000..637f20e Binary files /dev/null and b/docs/images/abonements-bumper-disks-tablet@2x.webp differ diff --git a/docs/images/about-gym-desktop@1x.jpg b/docs/images/about-gym-desktop@1x.jpg new file mode 100644 index 0000000..f204135 Binary files /dev/null and b/docs/images/about-gym-desktop@1x.jpg differ diff --git a/docs/images/about-gym-desktop@1x.webp b/docs/images/about-gym-desktop@1x.webp new file mode 100644 index 0000000..8fa46b2 Binary files /dev/null and b/docs/images/about-gym-desktop@1x.webp differ diff --git a/docs/images/about-gym-desktop@2x.jpg b/docs/images/about-gym-desktop@2x.jpg new file mode 100644 index 0000000..870e637 Binary files /dev/null and b/docs/images/about-gym-desktop@2x.jpg differ diff --git a/docs/images/about-gym-desktop@2x.webp b/docs/images/about-gym-desktop@2x.webp new file mode 100644 index 0000000..420f56e Binary files /dev/null and b/docs/images/about-gym-desktop@2x.webp differ diff --git a/docs/images/about-gym-mobile@1x.jpg b/docs/images/about-gym-mobile@1x.jpg new file mode 100644 index 0000000..1ebce1e Binary files /dev/null and b/docs/images/about-gym-mobile@1x.jpg differ diff --git a/docs/images/about-gym-mobile@1x.webp b/docs/images/about-gym-mobile@1x.webp new file mode 100644 index 0000000..ec29d0f Binary files /dev/null and b/docs/images/about-gym-mobile@1x.webp differ diff --git a/docs/images/about-gym-mobile@2x.jpg b/docs/images/about-gym-mobile@2x.jpg new file mode 100644 index 0000000..9ac933c Binary files /dev/null and b/docs/images/about-gym-mobile@2x.jpg differ diff --git a/docs/images/about-gym-mobile@2x.webp b/docs/images/about-gym-mobile@2x.webp new file mode 100644 index 0000000..6f62acd Binary files /dev/null and b/docs/images/about-gym-mobile@2x.webp differ diff --git a/docs/images/about-gym-tablet@1x.jpg b/docs/images/about-gym-tablet@1x.jpg new file mode 100644 index 0000000..8b93d62 Binary files /dev/null and b/docs/images/about-gym-tablet@1x.jpg differ diff --git a/docs/images/about-gym-tablet@1x.webp b/docs/images/about-gym-tablet@1x.webp new file mode 100644 index 0000000..9c4697a Binary files /dev/null and b/docs/images/about-gym-tablet@1x.webp differ diff --git a/docs/images/about-gym-tablet@2x.jpg b/docs/images/about-gym-tablet@2x.jpg new file mode 100644 index 0000000..aca7d0c Binary files /dev/null and b/docs/images/about-gym-tablet@2x.jpg differ diff --git a/docs/images/about-gym-tablet@2x.webp b/docs/images/about-gym-tablet@2x.webp new file mode 100644 index 0000000..b245156 Binary files /dev/null and b/docs/images/about-gym-tablet@2x.webp differ diff --git a/docs/images/coach-desktop@1x.png b/docs/images/coach-desktop@1x.png new file mode 100644 index 0000000..70d7188 Binary files /dev/null and b/docs/images/coach-desktop@1x.png differ diff --git a/docs/images/coach-desktop@1x.webp b/docs/images/coach-desktop@1x.webp new file mode 100644 index 0000000..fc1604c Binary files /dev/null and b/docs/images/coach-desktop@1x.webp differ diff --git a/docs/images/coach-desktop@2x.png b/docs/images/coach-desktop@2x.png new file mode 100644 index 0000000..66b74ae Binary files /dev/null and b/docs/images/coach-desktop@2x.png differ diff --git a/docs/images/coach-desktop@2x.webp b/docs/images/coach-desktop@2x.webp new file mode 100644 index 0000000..008728d Binary files /dev/null and b/docs/images/coach-desktop@2x.webp differ diff --git a/docs/images/coach-tablet@1x.png b/docs/images/coach-tablet@1x.png new file mode 100644 index 0000000..6840770 Binary files /dev/null and b/docs/images/coach-tablet@1x.png differ diff --git a/docs/images/coach-tablet@1x.webp b/docs/images/coach-tablet@1x.webp new file mode 100644 index 0000000..6e0705a Binary files /dev/null and b/docs/images/coach-tablet@1x.webp differ diff --git a/docs/images/coach-tablet@2x.png b/docs/images/coach-tablet@2x.png new file mode 100644 index 0000000..996423b Binary files /dev/null and b/docs/images/coach-tablet@2x.png differ diff --git a/docs/images/coach-tablet@2x.webp b/docs/images/coach-tablet@2x.webp new file mode 100644 index 0000000..629ef13 Binary files /dev/null and b/docs/images/coach-tablet@2x.webp differ diff --git a/docs/images/games-sportsman-desktop@1x.jpg b/docs/images/games-sportsman-desktop@1x.jpg new file mode 100644 index 0000000..cc6e87d Binary files /dev/null and b/docs/images/games-sportsman-desktop@1x.jpg differ diff --git a/docs/images/games-sportsman-desktop@1x.webp b/docs/images/games-sportsman-desktop@1x.webp new file mode 100644 index 0000000..d461465 Binary files /dev/null and b/docs/images/games-sportsman-desktop@1x.webp differ diff --git a/docs/images/games-sportsman-desktop@2x.jpg b/docs/images/games-sportsman-desktop@2x.jpg new file mode 100644 index 0000000..3f78392 Binary files /dev/null and b/docs/images/games-sportsman-desktop@2x.jpg differ diff --git a/docs/images/games-sportsman-desktop@2x.webp b/docs/images/games-sportsman-desktop@2x.webp new file mode 100644 index 0000000..eba42d8 Binary files /dev/null and b/docs/images/games-sportsman-desktop@2x.webp differ diff --git a/docs/images/games-sportsman-mobile@1x.jpg b/docs/images/games-sportsman-mobile@1x.jpg new file mode 100644 index 0000000..ffefd6c Binary files /dev/null and b/docs/images/games-sportsman-mobile@1x.jpg differ diff --git a/docs/images/games-sportsman-mobile@1x.webp b/docs/images/games-sportsman-mobile@1x.webp new file mode 100644 index 0000000..0f08f6b Binary files /dev/null and b/docs/images/games-sportsman-mobile@1x.webp differ diff --git a/docs/images/games-sportsman-mobile@2x.jpg b/docs/images/games-sportsman-mobile@2x.jpg new file mode 100644 index 0000000..691afa3 Binary files /dev/null and b/docs/images/games-sportsman-mobile@2x.jpg differ diff --git a/docs/images/games-sportsman-mobile@2x.webp b/docs/images/games-sportsman-mobile@2x.webp new file mode 100644 index 0000000..d282dda Binary files /dev/null and b/docs/images/games-sportsman-mobile@2x.webp differ diff --git a/docs/images/games-sportsman-tablet@1x.jpg b/docs/images/games-sportsman-tablet@1x.jpg new file mode 100644 index 0000000..e892635 Binary files /dev/null and b/docs/images/games-sportsman-tablet@1x.jpg differ diff --git a/docs/images/games-sportsman-tablet@1x.webp b/docs/images/games-sportsman-tablet@1x.webp new file mode 100644 index 0000000..8b1b1fb Binary files /dev/null and b/docs/images/games-sportsman-tablet@1x.webp differ diff --git a/docs/images/games-sportsman-tablet@2x.jpg b/docs/images/games-sportsman-tablet@2x.jpg new file mode 100644 index 0000000..1cc9915 Binary files /dev/null and b/docs/images/games-sportsman-tablet@2x.jpg differ diff --git a/docs/images/games-sportsman-tablet@2x.webp b/docs/images/games-sportsman-tablet@2x.webp new file mode 100644 index 0000000..ce8495f Binary files /dev/null and b/docs/images/games-sportsman-tablet@2x.webp differ diff --git a/docs/images/juri-aleksandr@1x.jpg b/docs/images/juri-aleksandr@1x.jpg new file mode 100644 index 0000000..4827ce9 Binary files /dev/null and b/docs/images/juri-aleksandr@1x.jpg differ diff --git a/docs/images/juri-aleksandr@1x.webp b/docs/images/juri-aleksandr@1x.webp new file mode 100644 index 0000000..a77a11b Binary files /dev/null and b/docs/images/juri-aleksandr@1x.webp differ diff --git a/docs/images/juri-aleksandr@2x.jpg b/docs/images/juri-aleksandr@2x.jpg new file mode 100644 index 0000000..2687bbd Binary files /dev/null and b/docs/images/juri-aleksandr@2x.jpg differ diff --git a/docs/images/juri-aleksandr@2x.webp b/docs/images/juri-aleksandr@2x.webp new file mode 100644 index 0000000..01a41ea Binary files /dev/null and b/docs/images/juri-aleksandr@2x.webp differ diff --git a/docs/images/juri-aleksey@1x.jpg b/docs/images/juri-aleksey@1x.jpg new file mode 100644 index 0000000..e0666c8 Binary files /dev/null and b/docs/images/juri-aleksey@1x.jpg differ diff --git a/docs/images/juri-aleksey@1x.webp b/docs/images/juri-aleksey@1x.webp new file mode 100644 index 0000000..17edd9f Binary files /dev/null and b/docs/images/juri-aleksey@1x.webp differ diff --git a/docs/images/juri-aleksey@2x.jpg b/docs/images/juri-aleksey@2x.jpg new file mode 100644 index 0000000..a45efbd Binary files /dev/null and b/docs/images/juri-aleksey@2x.jpg differ diff --git a/docs/images/juri-aleksey@2x.webp b/docs/images/juri-aleksey@2x.webp new file mode 100644 index 0000000..6950b76 Binary files /dev/null and b/docs/images/juri-aleksey@2x.webp differ diff --git a/docs/images/juri-anna@1x.jpg b/docs/images/juri-anna@1x.jpg new file mode 100644 index 0000000..3af3f39 Binary files /dev/null and b/docs/images/juri-anna@1x.jpg differ diff --git a/docs/images/juri-anna@1x.webp b/docs/images/juri-anna@1x.webp new file mode 100644 index 0000000..db7a4b2 Binary files /dev/null and b/docs/images/juri-anna@1x.webp differ diff --git a/docs/images/juri-anna@2x.jpg b/docs/images/juri-anna@2x.jpg new file mode 100644 index 0000000..c3a4bdb Binary files /dev/null and b/docs/images/juri-anna@2x.jpg differ diff --git a/docs/images/juri-anna@2x.webp b/docs/images/juri-anna@2x.webp new file mode 100644 index 0000000..e031ab7 Binary files /dev/null and b/docs/images/juri-anna@2x.webp differ diff --git a/docs/images/juri-mary@1x.jpg b/docs/images/juri-mary@1x.jpg new file mode 100644 index 0000000..949a708 Binary files /dev/null and b/docs/images/juri-mary@1x.jpg differ diff --git a/docs/images/juri-mary@1x.webp b/docs/images/juri-mary@1x.webp new file mode 100644 index 0000000..4396d4a Binary files /dev/null and b/docs/images/juri-mary@1x.webp differ diff --git a/docs/images/juri-mary@2x.jpg b/docs/images/juri-mary@2x.jpg new file mode 100644 index 0000000..c9857c4 Binary files /dev/null and b/docs/images/juri-mary@2x.jpg differ diff --git a/docs/images/juri-mary@2x.webp b/docs/images/juri-mary@2x.webp new file mode 100644 index 0000000..448ff8d Binary files /dev/null and b/docs/images/juri-mary@2x.webp differ diff --git a/docs/images/offers-woman-desktop@1x.jpg b/docs/images/offers-woman-desktop@1x.jpg new file mode 100644 index 0000000..52a848a Binary files /dev/null and b/docs/images/offers-woman-desktop@1x.jpg differ diff --git a/docs/images/offers-woman-desktop@1x.webp b/docs/images/offers-woman-desktop@1x.webp new file mode 100644 index 0000000..0d87610 Binary files /dev/null and b/docs/images/offers-woman-desktop@1x.webp differ diff --git a/docs/images/offers-woman-desktop@2x.jpg b/docs/images/offers-woman-desktop@2x.jpg new file mode 100644 index 0000000..42f43d6 Binary files /dev/null and b/docs/images/offers-woman-desktop@2x.jpg differ diff --git a/docs/images/offers-woman-desktop@2x.webp b/docs/images/offers-woman-desktop@2x.webp new file mode 100644 index 0000000..f0559a5 Binary files /dev/null and b/docs/images/offers-woman-desktop@2x.webp differ diff --git a/docs/images/offers-woman-mobile@1x.jpg b/docs/images/offers-woman-mobile@1x.jpg new file mode 100644 index 0000000..3495110 Binary files /dev/null and b/docs/images/offers-woman-mobile@1x.jpg differ diff --git a/docs/images/offers-woman-mobile@1x.webp b/docs/images/offers-woman-mobile@1x.webp new file mode 100644 index 0000000..b3b2442 Binary files /dev/null and b/docs/images/offers-woman-mobile@1x.webp differ diff --git a/docs/images/offers-woman-mobile@2x.jpg b/docs/images/offers-woman-mobile@2x.jpg new file mode 100644 index 0000000..5f18282 Binary files /dev/null and b/docs/images/offers-woman-mobile@2x.jpg differ diff --git a/docs/images/offers-woman-mobile@2x.webp b/docs/images/offers-woman-mobile@2x.webp new file mode 100644 index 0000000..dd7b7e4 Binary files /dev/null and b/docs/images/offers-woman-mobile@2x.webp differ diff --git a/docs/images/offers-woman-tablet@1x.jpg b/docs/images/offers-woman-tablet@1x.jpg new file mode 100644 index 0000000..5d1671f Binary files /dev/null and b/docs/images/offers-woman-tablet@1x.jpg differ diff --git a/docs/images/offers-woman-tablet@1x.webp b/docs/images/offers-woman-tablet@1x.webp new file mode 100644 index 0000000..3a28fd1 Binary files /dev/null and b/docs/images/offers-woman-tablet@1x.webp differ diff --git a/docs/images/offers-woman-tablet@2x.jpg b/docs/images/offers-woman-tablet@2x.jpg new file mode 100644 index 0000000..b150035 Binary files /dev/null and b/docs/images/offers-woman-tablet@2x.jpg differ diff --git a/docs/images/offers-woman-tablet@2x.webp b/docs/images/offers-woman-tablet@2x.webp new file mode 100644 index 0000000..e5d653a Binary files /dev/null and b/docs/images/offers-woman-tablet@2x.webp differ diff --git a/docs/images/reviews-alina-mobile@1x.jpg b/docs/images/reviews-alina-mobile@1x.jpg new file mode 100644 index 0000000..952ab42 Binary files /dev/null and b/docs/images/reviews-alina-mobile@1x.jpg differ diff --git a/docs/images/reviews-alina-mobile@1x.webp b/docs/images/reviews-alina-mobile@1x.webp new file mode 100644 index 0000000..01229d2 Binary files /dev/null and b/docs/images/reviews-alina-mobile@1x.webp differ diff --git a/docs/images/reviews-alina-mobile@2x.jpg b/docs/images/reviews-alina-mobile@2x.jpg new file mode 100644 index 0000000..3956943 Binary files /dev/null and b/docs/images/reviews-alina-mobile@2x.jpg differ diff --git a/docs/images/reviews-alina-mobile@2x.webp b/docs/images/reviews-alina-mobile@2x.webp new file mode 100644 index 0000000..d602e55 Binary files /dev/null and b/docs/images/reviews-alina-mobile@2x.webp differ diff --git a/docs/images/reviews-alina-tablet-desktop@1x.jpg b/docs/images/reviews-alina-tablet-desktop@1x.jpg new file mode 100644 index 0000000..982c019 Binary files /dev/null and b/docs/images/reviews-alina-tablet-desktop@1x.jpg differ diff --git a/docs/images/reviews-alina-tablet-desktop@1x.webp b/docs/images/reviews-alina-tablet-desktop@1x.webp new file mode 100644 index 0000000..c5f2461 Binary files /dev/null and b/docs/images/reviews-alina-tablet-desktop@1x.webp differ diff --git a/docs/images/reviews-alina-tablet-desktop@2x.jpg b/docs/images/reviews-alina-tablet-desktop@2x.jpg new file mode 100644 index 0000000..966d5f5 Binary files /dev/null and b/docs/images/reviews-alina-tablet-desktop@2x.jpg differ diff --git a/docs/images/reviews-alina-tablet-desktop@2x.webp b/docs/images/reviews-alina-tablet-desktop@2x.webp new file mode 100644 index 0000000..69085f8 Binary files /dev/null and b/docs/images/reviews-alina-tablet-desktop@2x.webp differ diff --git a/docs/images/reviews-anna-mobile@1x.jpg b/docs/images/reviews-anna-mobile@1x.jpg new file mode 100644 index 0000000..a8219fb Binary files /dev/null and b/docs/images/reviews-anna-mobile@1x.jpg differ diff --git a/docs/images/reviews-anna-mobile@1x.webp b/docs/images/reviews-anna-mobile@1x.webp new file mode 100644 index 0000000..d64c6ec Binary files /dev/null and b/docs/images/reviews-anna-mobile@1x.webp differ diff --git a/docs/images/reviews-anna-mobile@2x.jpg b/docs/images/reviews-anna-mobile@2x.jpg new file mode 100644 index 0000000..0b4258b Binary files /dev/null and b/docs/images/reviews-anna-mobile@2x.jpg differ diff --git a/docs/images/reviews-anna-mobile@2x.webp b/docs/images/reviews-anna-mobile@2x.webp new file mode 100644 index 0000000..5ecb6cf Binary files /dev/null and b/docs/images/reviews-anna-mobile@2x.webp differ diff --git a/docs/images/reviews-anna-tablet-desktop@1x.jpg b/docs/images/reviews-anna-tablet-desktop@1x.jpg new file mode 100644 index 0000000..ef808aa Binary files /dev/null and b/docs/images/reviews-anna-tablet-desktop@1x.jpg differ diff --git a/docs/images/reviews-anna-tablet-desktop@1x.webp b/docs/images/reviews-anna-tablet-desktop@1x.webp new file mode 100644 index 0000000..b51dbd4 Binary files /dev/null and b/docs/images/reviews-anna-tablet-desktop@1x.webp differ diff --git a/docs/images/reviews-anna-tablet-desktop@2x.jpg b/docs/images/reviews-anna-tablet-desktop@2x.jpg new file mode 100644 index 0000000..ee07521 Binary files /dev/null and b/docs/images/reviews-anna-tablet-desktop@2x.jpg differ diff --git a/docs/images/reviews-anna-tablet-desktop@2x.webp b/docs/images/reviews-anna-tablet-desktop@2x.webp new file mode 100644 index 0000000..ba67825 Binary files /dev/null and b/docs/images/reviews-anna-tablet-desktop@2x.webp differ diff --git a/docs/images/reviews-sofia-mobile@1x.jpg b/docs/images/reviews-sofia-mobile@1x.jpg new file mode 100644 index 0000000..0109472 Binary files /dev/null and b/docs/images/reviews-sofia-mobile@1x.jpg differ diff --git a/docs/images/reviews-sofia-mobile@1x.webp b/docs/images/reviews-sofia-mobile@1x.webp new file mode 100644 index 0000000..feb1f79 Binary files /dev/null and b/docs/images/reviews-sofia-mobile@1x.webp differ diff --git a/docs/images/reviews-sofia-mobile@2x.jpg b/docs/images/reviews-sofia-mobile@2x.jpg new file mode 100644 index 0000000..48dcdcf Binary files /dev/null and b/docs/images/reviews-sofia-mobile@2x.jpg differ diff --git a/docs/images/reviews-sofia-mobile@2x.webp b/docs/images/reviews-sofia-mobile@2x.webp new file mode 100644 index 0000000..fc2cd3f Binary files /dev/null and b/docs/images/reviews-sofia-mobile@2x.webp differ diff --git a/docs/images/reviews-sofia-tablet-desktop@1x.jpg b/docs/images/reviews-sofia-tablet-desktop@1x.jpg new file mode 100644 index 0000000..b9ecb41 Binary files /dev/null and b/docs/images/reviews-sofia-tablet-desktop@1x.jpg differ diff --git a/docs/images/reviews-sofia-tablet-desktop@1x.webp b/docs/images/reviews-sofia-tablet-desktop@1x.webp new file mode 100644 index 0000000..7055a22 Binary files /dev/null and b/docs/images/reviews-sofia-tablet-desktop@1x.webp differ diff --git a/docs/images/reviews-sofia-tablet-desktop@2x.jpg b/docs/images/reviews-sofia-tablet-desktop@2x.jpg new file mode 100644 index 0000000..1dd812b Binary files /dev/null and b/docs/images/reviews-sofia-tablet-desktop@2x.jpg differ diff --git a/docs/images/reviews-sofia-tablet-desktop@2x.webp b/docs/images/reviews-sofia-tablet-desktop@2x.webp new file mode 100644 index 0000000..743ff58 Binary files /dev/null and b/docs/images/reviews-sofia-tablet-desktop@2x.webp differ diff --git a/docs/images/supergym-logo-desktop.svg b/docs/images/supergym-logo-desktop.svg new file mode 100644 index 0000000..f2ead4c --- /dev/null +++ b/docs/images/supergym-logo-desktop.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/images/supergym-logo-mobile.svg b/docs/images/supergym-logo-mobile.svg new file mode 100644 index 0000000..bfe906a --- /dev/null +++ b/docs/images/supergym-logo-mobile.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/images/supergym-logo-tablet.svg b/docs/images/supergym-logo-tablet.svg new file mode 100644 index 0000000..11daf18 --- /dev/null +++ b/docs/images/supergym-logo-tablet.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/images/video-background-desktop@1x.jpg b/docs/images/video-background-desktop@1x.jpg new file mode 100644 index 0000000..35709b3 Binary files /dev/null and b/docs/images/video-background-desktop@1x.jpg differ diff --git a/docs/images/video-background-desktop@1x.webp b/docs/images/video-background-desktop@1x.webp new file mode 100644 index 0000000..61a0738 Binary files /dev/null and b/docs/images/video-background-desktop@1x.webp differ diff --git a/docs/images/video-background-desktop@2x.jpg b/docs/images/video-background-desktop@2x.jpg new file mode 100644 index 0000000..7fc3601 Binary files /dev/null and b/docs/images/video-background-desktop@2x.jpg differ diff --git a/docs/images/video-background-desktop@2x.webp b/docs/images/video-background-desktop@2x.webp new file mode 100644 index 0000000..ad19a19 Binary files /dev/null and b/docs/images/video-background-desktop@2x.webp differ diff --git a/docs/images/video-background-mobile@1x.jpg b/docs/images/video-background-mobile@1x.jpg new file mode 100644 index 0000000..ad17a05 Binary files /dev/null and b/docs/images/video-background-mobile@1x.jpg differ diff --git a/docs/images/video-background-mobile@1x.webp b/docs/images/video-background-mobile@1x.webp new file mode 100644 index 0000000..7e5ae80 Binary files /dev/null and b/docs/images/video-background-mobile@1x.webp differ diff --git a/docs/images/video-background-mobile@2x.jpg b/docs/images/video-background-mobile@2x.jpg new file mode 100644 index 0000000..375f66a Binary files /dev/null and b/docs/images/video-background-mobile@2x.jpg differ diff --git a/docs/images/video-background-mobile@2x.webp b/docs/images/video-background-mobile@2x.webp new file mode 100644 index 0000000..15a4776 Binary files /dev/null and b/docs/images/video-background-mobile@2x.webp differ diff --git a/docs/images/video-background-tablet@1x.jpg b/docs/images/video-background-tablet@1x.jpg new file mode 100644 index 0000000..39c0056 Binary files /dev/null and b/docs/images/video-background-tablet@1x.jpg differ diff --git a/docs/images/video-background-tablet@1x.webp b/docs/images/video-background-tablet@1x.webp new file mode 100644 index 0000000..c4456d7 Binary files /dev/null and b/docs/images/video-background-tablet@1x.webp differ diff --git a/docs/images/video-background-tablet@2x.jpg b/docs/images/video-background-tablet@2x.jpg new file mode 100644 index 0000000..b758dec Binary files /dev/null and b/docs/images/video-background-tablet@2x.jpg differ diff --git a/docs/images/video-background-tablet@2x.webp b/docs/images/video-background-tablet@2x.webp new file mode 100644 index 0000000..92aabe0 Binary files /dev/null and b/docs/images/video-background-tablet@2x.webp differ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..2cff860 --- /dev/null +++ b/docs/index.html @@ -0,0 +1 @@ +SUPERGYM
8 800 555-55-55

Тренажёрный зал Групповые занятия Кардио-зона

Омск фитнес центр

Купить абонемент
Накаченный тренер в футболке с суперменом.

Тренажёрный зал

Просторный зал площадью 900 кв/м

Supergym – самый большой фитнес центр за Уралом и идеальное место для укрепления тела и здоровья. Тренажёрный зал оснащён всем необходимым современным оборудованием для всех спортсменов.

В зале расположены отдельная зона для Crossfit и кардио-зона с 40 тренажёрами. Также в фитнес центре есть несколько оборудованных залов для различных видов групповых занятий.

Абонементы

SUPER GAMES

Дата

Время

Ежегодные соревнования по CrossFit

заполнить заявку
Накаченный мужчина ударяет по мелу, он разлетается в стороны.

Жюри

Девушка в бардовом свитшоте с длинными темными волосами.

Анна Павлова

Yoga

  • Certified Level 4 Trainer
  • Титулованный преподаватель по Йоге
  • Опыт — 10 лет
Мужчина в черном лонгсливе с короткими темными волосами.

Алексей Лавров

Powerlifting

  • Certified Level 5 Trainer
  • Кандидат в мастера спорта по Пауэрлифтингу
  • Опыт — 12 лет
Мужчина в майке и очках с короткими темными волосами показывает мышцы.

Александр Пашков

CrossFit

  • Certified Level 3 Trainer
  • Победитель чемпионата России по CrossFit
  • Опыт — 6 лет
Девушка с длинными темными волосами подпирает рукой подбородок и смотрит в камеру.

Мария Кетова

Stretching

  • Certified Level 3 Trainer
  • КМС в художественной гимнастике
  • Опыт — 15 лет
Мужчина в черном лонгсливе с короткими темными волосами.

Алексей Лавров

Powerlifting

  • Certified Level 5 Trainer
  • Кандидат в мастера спорта по Пауэрлифтингу
  • Опыт — 12 лет
Мужчина в майке и очках с короткими темными волосами показывает мышцы.

Александр Пашков

CrossFit

  • Certified Level 3 Trainer
  • Победитель чемпионата России по CrossFit
  • Опыт — 6 лет
Девушка в бардовом свитшоте с длинными темными волосами.

Анна Павлова

Yoga

  • Certified Level 4 Trainer
  • Титулованный преподаватель по Йоге
  • Опыт — 10 лет
Девушка с длинными темными волосами подпирает рукой подбородок и смотрит в камеру.

Мария Кетова

Stretching

  • Certified Level 3 Trainer
  • КМС в художественной гимнастике
  • Опыт — 15 лет

Наши преимущества

  • 900 кв/м

    Площадь

    Занимайтесь без очередей и толкучки

  • 70 машин

    Собственная парковка

    Вы всегда найдёте место для своей машины на нашей парковке

  • 100

    Тренажёров

    Современные тренажёры на все группы мышц

  • 350 мест

    Комфорт

    Просторные раздевалки, душевые, фен, Wi-Fi, кулеры

  • 5+ лет

    Тренерский опыт

    Добивайтесь своих целей быстрее с профессиональным тренером

Акции

Год 4999

Безлимитный абонемент в тренажёрный зал

подробнее
Девушка в спортивном костюме на фоне голубого неба.
  • Месяц бесплатно

    Приведи друга, получи абонемент в подарок

    подробнее
  • Скидка 20%

    Корпоративный фитнес с командой

    подробнее

Вопросы и ответы

  • Как стать членом фитнес‑центра?

    При первом посещении и покупке абонемента, необходимо заполнить анкету и подписать договор. При покупке абонемента онлайн, анкета также заполняется онлайн и договор придёт вам на почту.

  • Где можно посмотреть расписание?

    Вы можете ознакомиться с расписание на стойке информации, на нашем официальном сайте. Так же есть возможность оформить подписку на наши новости и получать расписание и обновления на почту каждую неделю.

  • Есть кулеры в центре? Предоставляются полотенца?

    В нашем современном спортзале есть кулеры с водой для удобства посетителей. Что касается полотенец, то в спортзале предоставляют их бесплатно, в то время как другие могут взимать дополнительную плату или требовать, чтобы вы принесли свое собственное полотенце.

  • Сколько тренеров работает в клубе и какова их квалификация?

    В нашем клубе работает 8 тренеров с обширными квалификациями и направлениями. Посмотреть подробную информацию можно на сайте.

Отзывы

Девушка с пучком на голове в спортивном топе.

Анна Орлова

«Хожу в Supergym уже больше года. Нравится, что в клубе всегда чисто, тренажёры обновляют, персонал дружелюбный. Зал просторный, даже в вечернее время нет очередей»

Девушка с пучком на голове в спортивном топе.

Алина Михайлова

«Самый лучший клуб из всех тех в которых я была! Отличные спортивные направления, залы, оборудование, приветливый персонал, уборка помещений, залов на 1 уровне.

Девушка с пучком на голове в спортивном топе.

София Медведева

Комфортный, чистый и светлый клуб. Приветливый персонал, удобная парковка. Приятно заниматься, очень много места, люди не мешают друг другу.

Акции и контакты.

Бесплатное занятие

Контакты

\ No newline at end of file diff --git a/docs/manifest.webmanifest b/docs/manifest.webmanifest new file mode 100644 index 0000000..3b38dea --- /dev/null +++ b/docs/manifest.webmanifest @@ -0,0 +1,7 @@ +{"icons": [ + { "src": "favicons/supergym-icon180.png", "type": "image/png", "sizes": "180x180" }, + { "src": "favicons/supergym-icon192.png", "type": "image/png", "sizes": "192x192" }, + { "src": "favicons/supergym-icon256.png", "type": "image/png", "sizes": "256x256" }, + { "src": "favicons/supergym-icon512.png", "type": "image/png", "sizes": "512x512" } +] +} diff --git a/docs/scripts/abonements-price-changer.js b/docs/scripts/abonements-price-changer.js new file mode 100644 index 0000000..7fca98b --- /dev/null +++ b/docs/scripts/abonements-price-changer.js @@ -0,0 +1 @@ +var r={oneMonth:{coachRate:5e3,daytimeRate:1700,fullDayRate:2700},sixMonth:{coachRate:3e4,daytimeRate:10200,fullDayRate:16200},twelveMonth:{coachRate:6e4,daytimeRate:20400,fullDayRate:32400}},h={abonementOneMonth:"1 \u043C\u0435\u0441\u044F\u0446",abonementSixMonth:"6 \u043C\u0435\u0441\u044F\u0446\u0435\u0432",abonementTwelveMonth:"12 \u043C\u0435\u0441\u044F\u0446\u0435\u0432"},t={oneMonth:0,sixMonth:1,twelveMonth:2},l=document.querySelectorAll(".abonements__duration-button"),o=document.querySelectorAll(".abonements__cost-background"),a=document.querySelectorAll(".abonements__cost-current"),b=[r.oneMonth,r.sixMonth,r.twelveMonth],e=(n,c)=>{n.forEach((s,M)=>{let i=Object.entries(b[c]);s.innerHTML=i[M][1]})},u=()=>{l.forEach(n=>{n.addEventListener("click",c=>{switch(l.forEach(s=>s.classList.remove("abonements__duration-button--active")),n.classList.add("abonements__duration-button--active"),c.target.innerHTML){case h.abonementOneMonth:e(o,t.oneMonth),e(a,t.oneMonth);break;case h.abonementSixMonth:e(o,t.sixMonth),e(a,t.sixMonth);break;case h.abonementTwelveMonth:e(o,t.twelveMonth),e(a,t.twelveMonth);break;default:e(o,t.oneMonth),e(a,t.oneMonth)}})})};export{u as priceChanger}; diff --git a/docs/scripts/about-us-video.js b/docs/scripts/about-us-video.js new file mode 100644 index 0000000..78a55a9 --- /dev/null +++ b/docs/scripts/about-us-video.js @@ -0,0 +1 @@ +var t=document.querySelector(".about-us__link"),r=document.querySelector(".about-us__play-button"),o=()=>{let e=document.createElement("iframe");e.classList.add("about-us__video"),e.setAttribute("title","\u0412\u0438\u0434\u0435\u043E \u043E \u043D\u0430\u0448\u0435\u043C \u0441\u043F\u043E\u0440\u0442 \u0437\u0430\u043B\u0435"),e.setAttribute("src",t.dataset.href),e.setAttribute("allow","accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"),e.setAttribute("referrerpolicy","strict-origin-when-cross-origin"),e.setAttribute("allowfullscreen",""),t.appendChild(e)},i=()=>{t.addEventListener("click",()=>{t.removeAttribute("href"),r.remove(),o()})};export{i as startVideo}; diff --git a/docs/scripts/accordion-switch.js b/docs/scripts/accordion-switch.js new file mode 100644 index 0000000..6506264 --- /dev/null +++ b/docs/scripts/accordion-switch.js @@ -0,0 +1 @@ +var o={Center:{One:{title:"\u041A\u0430\u043A \u0441\u0442\u0430\u0442\u044C \u0447\u043B\u0435\u043D\u043E\u043C \u0444\u0438\u0442\u043D\u0435\u0441\u2011\u0446\u0435\u043D\u0442\u0440\u0430?",description:"\u041F\u0440\u0438 \u043F\u0435\u0440\u0432\u043E\u043C \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0438 \u0438 \u043F\u043E\u043A\u0443\u043F\u043A\u0435 \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442\u0430, \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0430\u043D\u043A\u0435\u0442\u0443 \u0438 \u043F\u043E\u0434\u043F\u0438\u0441\u0430\u0442\u044C \u0434\u043E\u0433\u043E\u0432\u043E\u0440. \u041F\u0440\u0438 \u043F\u043E\u043A\u0443\u043F\u043A\u0435 \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442\u0430 \u043E\u043D\u043B\u0430\u0439\u043D, \u0430\u043D\u043A\u0435\u0442\u0430 \u0442\u0430\u043A\u0436\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u043E\u043D\u043B\u0430\u0439\u043D \u0438 \u0434\u043E\u0433\u043E\u0432\u043E\u0440 \u043F\u0440\u0438\u0434\u0451\u0442 \u0432\u0430\u043C \u043D\u0430 \u043F\u043E\u0447\u0442\u0443."},Two:{title:"\u0413\u0434\u0435 \u043C\u043E\u0436\u043D\u043E \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435?",description:"\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0437\u043D\u0430\u043A\u043E\u043C\u0438\u0442\u044C\u0441\u044F \u0441 \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u043D\u0430 \u0441\u0442\u043E\u0439\u043A\u0435 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438, \u043D\u0430 \u043D\u0430\u0448\u0435\u043C \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u043C \u0441\u0430\u0439\u0442\u0435. \u0422\u0430\u043A \u0436\u0435 \u0435\u0441\u0442\u044C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u043E\u0444\u043E\u0440\u043C\u0438\u0442\u044C \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443 \u043D\u0430 \u043D\u0430\u0448\u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u0438 \u0438 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0438 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u043D\u0430 \u043F\u043E\u0447\u0442\u0443 \u043A\u0430\u0436\u0434\u0443\u044E \u043D\u0435\u0434\u0435\u043B\u044E."},Three:{title:"\u0415\u0441\u0442\u044C \u043A\u0443\u043B\u0435\u0440\u044B \u0432 \u0446\u0435\u043D\u0442\u0440\u0435? \u041F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u043F\u043E\u043B\u043E\u0442\u0435\u043D\u0446\u0430?",description:"\u0412 \u043D\u0430\u0448\u0435\u043C \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u043C \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0435 \u0435\u0441\u0442\u044C \u043A\u0443\u043B\u0435\u0440\u044B \u0441 \u0432\u043E\u0434\u043E\u0439 \u0434\u043B\u044F \u0443\u0434\u043E\u0431\u0441\u0442\u0432\u0430 \u043F\u043E\u0441\u0435\u0442\u0438\u0442\u0435\u043B\u0435\u0439. \u0427\u0442\u043E \u043A\u0430\u0441\u0430\u0435\u0442\u0441\u044F \u043F\u043E\u043B\u043E\u0442\u0435\u043D\u0435\u0446, \u0442\u043E \u0432 \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0435 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442 \u0438\u0445 \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E, \u0432 \u0442\u043E \u0432\u0440\u0435\u043C\u044F \u043A\u0430\u043A \u0434\u0440\u0443\u0433\u0438\u0435 \u043C\u043E\u0433\u0443\u0442 \u0432\u0437\u0438\u043C\u0430\u0442\u044C \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u0443\u044E \u043F\u043B\u0430\u0442\u0443 \u0438\u043B\u0438 \u0442\u0440\u0435\u0431\u043E\u0432\u0430\u0442\u044C, \u0447\u0442\u043E\u0431\u044B \u0432\u044B \u043F\u0440\u0438\u043D\u0435\u0441\u043B\u0438 \u0441\u0432\u043E\u0435 \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0435 \u043F\u043E\u043B\u043E\u0442\u0435\u043D\u0446\u0435."},Four:{title:"\u0421\u043A\u043E\u043B\u044C\u043A\u043E \u0442\u0440\u0435\u043D\u0435\u0440\u043E\u0432 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0432 \u043A\u043B\u0443\u0431\u0435 \u0438 \u043A\u0430\u043A\u043E\u0432\u0430 \u0438\u0445 \u043A\u0432\u0430\u043B\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F",description:"\u0412 \u043D\u0430\u0448\u0435\u043C \u043A\u043B\u0443\u0431\u0435 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 8 \u0442\u0440\u0435\u043D\u0435\u0440\u043E\u0432 \u0441 \u043E\u0431\u0448\u0438\u0440\u043D\u044B\u043C\u0438 \u043A\u0432\u0430\u043B\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F\u043C\u0438 \u0438 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F\u043C\u0438. \u041F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u0443\u044E \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043C\u043E\u0436\u043D\u043E \u043D\u0430 \u0441\u0430\u0439\u0442\u0435."}},Subscription:{One:{title:"\u0417\u0430\u043D\u044F\u0442\u0438\u044F \u0441 \u0442\u0440\u0435\u043D\u0435\u0440\u043E\u043C \u0432\u0445\u043E\u0434\u044F\u0442 \u0432 \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442?",description:"\u041F\u0440\u0438 \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0438 \u0442\u0440\u0435\u043D\u0430\u0436\u0435\u0440\u043D\u043E\u0433\u043E \u0437\u0430\u043B\u0430 \u0432\u0430\u043C \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u043E\u043F\u043B\u0430\u0442\u0438\u0442\u044C \u0437\u0430\u043D\u044F\u0442\u0438\u044F \u0441 \u0442\u0440\u0435\u043D\u0435\u0440\u043E\u043C \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E. \u0412 \u0437\u0430\u043B\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0435\u0436\u0443\u0440\u043D\u044B\u0439 \u0442\u0440\u0435\u043D\u0435\u0440, \u043A\u043E\u0442\u043E\u0440\u043E\u043C\u0443 \u043C\u043E\u0436\u043D\u043E \u0437\u0430\u0434\u0430\u0442\u044C \u0432\u043E\u043F\u0440\u043E\u0441, \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043D\u0435\u0431\u043E\u043B\u044C\u0448\u0443\u044E \u043A\u043E\u043D\u0441\u0443\u043B\u044C\u0442\u0430\u0446\u0438\u044E \u043F\u043E \u0442\u0440\u0435\u043D\u0430\u0436\u0435\u0440\u0443 \u0438\u043B\u0438 \u0442\u0435\u0445\u043D\u0438\u043A\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u0443\u043F\u0440\u0430\u0436\u043D\u0435\u043D\u0438\u044F."},Two:{title:"\u041C\u043E\u0436\u043D\u043E \u043B\u0438 \u0437\u0430\u043C\u043E\u0440\u043E\u0437\u0438\u0442\u044C \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442?",description:"\u041B\u0443\u0447\u0448\u0438\u0439 \u0441\u043F\u043E\u0441\u043E\u0431 \u0443\u0437\u043D\u0430\u0442\u044C \u043E \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438 \u0438 \u0443\u0441\u043B\u043E\u0432\u0438\u044F\u0445 \u0437\u0430\u043C\u043E\u0440\u043E\u0437\u043A\u0438 \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442\u0430 \u0432 \u0432\u0430\u0448\u0435\u043C \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0435 \u2014 \u044D\u0442\u043E \u043E\u0431\u0440\u0430\u0442\u0438\u0442\u044C\u0441\u044F \u043D\u0435\u043F\u043E\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043D\u043D\u043E \u0432 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044E \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0430, \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0438\u0445 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 \u0438\u043B\u0438 \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u044F \u0432\u0430\u0448\u0435\u0433\u043E \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442\u0430."},Three:{title:"\u0415\u0441\u0442\u044C \u043B\u0438 \u043B\u0438\u043C\u0438\u0442 \u043F\u043E \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F\u043C \u0442\u0440\u0435\u043D\u0430\u0436\u0435\u0440\u043D\u043E\u0433\u043E \u0437\u0430\u043B\u0430 \u0438 \u0433\u0440\u0443\u043F\u043F\u043E\u0432\u044B\u0445 \u0437\u0430\u043D\u044F\u0442\u0438\u0439?",description:"\u0410\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u043F\u043E\u0432\u044B\u0435 \u0437\u0430\u043D\u044F\u0442\u0438\u044F \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0439 \u0433\u0440\u0443\u043F\u043F\u043E\u0432\u044B\u0445 \u043A\u043B\u0430\u0441\u0441\u043E\u0432 \u0432 \u043C\u0435\u0441\u044F\u0446."},Four:{title:"\u0413\u0434\u0435 \u043C\u043E\u0436\u043D\u043E \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435?",description:"\u0427\u0442\u043E\u0431\u044B \u0443\u0437\u043D\u0430\u0442\u044C \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043E \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0430, \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u043E\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C\u0438 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0430\u043C\u0438 - \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0439 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0430, \u0447\u0435\u0440\u0435\u0437 \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435, \u043F\u043E\u0437\u0432\u043E\u043D\u0438\u0442\u044C \u043D\u0430\u043C \u0438\u043B\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u0438\u0442\u044C \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u0443\u044E \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443."}},Services:{One:{title:"\u041F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 \u043B\u0438 \u043A\u043B\u0443\u0431 \u0443\u0441\u043B\u0443\u0433\u0438 \u043F\u043E \u043A\u043E\u043D\u0441\u0443\u043B\u044C\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044E \u043F\u043E \u0432\u043E\u043F\u0440\u043E\u0441\u0430\u043C \u043F\u0438\u0442\u0430\u043D\u0438\u044F?",description:"\u0414\u0430. \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0431\u0440\u0430\u0442\u0438\u0442\u044C\u0441\u044F \u043A\u0430\u043A \u043A \u0441\u0432\u043E\u0435\u043C\u0443 \u0442\u0440\u0435\u043D\u0435\u0440\u0443, \u0442\u0430\u043A \u0438 \u043A \u043D\u0430\u0448\u0435\u043C\u0443 \u043D\u0443\u0442\u0440\u0438\u0446\u0438\u043E\u043B\u043E\u0433\u0443. \u0421\u043F\u0435\u0446\u0438\u0430\u043B\u0438\u0441\u0442 \u0443\u0442\u043E\u0447\u043D\u0438\u0442 \u0432\u0430\u0448\u0438 \u0434\u0430\u043D\u043D\u044B\u0435, \u0446\u0435\u043B\u0438 \u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0438\u0442 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0443 \u043F\u0438\u0442\u0430\u043D\u0438\u044F."},Two:{title:"\u041F\u0440\u043E\u0432\u043E\u0434\u044F\u0442\u0441\u044F \u043B\u0438 \u0432 \u043A\u043B\u0443\u0431\u0435 \u043A\u0430\u043A\u0438\u0435-\u043B\u0438\u0431\u043E \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F \u0438\u043B\u0438 \u0441\u043E\u0440\u0435\u0432\u043D\u043E\u0432\u0430\u043D\u0438\u044F?",description:"\u0414\u0430, \u0432 \u043D\u0430\u0448\u0435\u043C \u0437\u0430\u043B\u0435 \u043F\u0440\u043E\u0432\u043E\u0434\u0438\u0442\u0441\u044F - \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0435 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F \u0438 \u0441\u043E\u0440\u0435\u0432\u043D\u043E\u0432\u0430\u043D\u0438\u044F. \u0424\u0438\u0442\u043D\u0435\u0441-\u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F \u0438 \u043C\u0430\u0441\u0442\u0435\u0440-\u043A\u043B\u0430\u0441\u0441\u044B, \u0441\u043E\u0440\u0435\u0432\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u0438 \u0442\u0443\u0440\u043D\u0438\u0440\u044B, \u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F, \u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u0434\u043D\u0438 \u0438 \u0434\u043D\u0438 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0445 \u0434\u0432\u0435\u0440\u0435\u0439. \u0410\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u043E\u0435 \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u043C\u043E\u0436\u043D\u043E \u0443\u0437\u043D\u0430\u0442\u044C \u0432 \u043D\u0430\u0448\u0438\u0445 \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0441\u0435\u0442\u044F\u0445."},Three:{title:"\u041C\u043E\u0436\u043D\u043E \u043B\u0438 \u043F\u0440\u0438\u043E\u0431\u0440\u0435\u0441\u0442\u0438 \u0432 \u0446\u0435\u043D\u0442\u0440\u0435 \u0441\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u043E\u0435 \u043F\u0438\u0442\u0430\u043D\u0438\u0435?",description:"\u041C\u044B \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u043C \u0441\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u043E\u0435 \u043F\u0438\u0442\u0430\u043D\u0438\u0435 \u0432 \u043D\u0430\u0448\u0435\u043C \u043C\u0430\u0433\u0430\u0437\u0438\u043D\u0430\u0445 \u0438 \u043D\u0430 \u0440\u0435\u0441\u0435\u043F\u0448\u0435\u043D\u0435."},Four:{title:"\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0446\u0435\u043D\u0442\u0440\u0435 \u0434\u0435\u0442\u0441\u043A\u0430\u044F \u043A\u043E\u043C\u043D\u0430\u0442\u0430?",description:"\u0414\u0430, \u0432 \u043D\u0430\u0448\u0435\u043C \u0441\u043F\u043E\u0440\u0442 \u0437\u0430\u043B\u0435 \u0435\u0441\u0442\u044C \u0434\u0435\u0442\u0441\u043A\u0430\u044F \u043A\u043E\u043C\u043D\u0430\u0442\u0430. \u041F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0444\u043E\u0442\u043E\u0433\u0440\u0430\u0444\u0438\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u0432 \u043D\u0430\u0448\u0438\u0445 \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0441\u0435\u0442\u044F\u0445."}},Rules:{One:{title:"\u0415\u0441\u0442\u044C \u0432 \u0444\u0438\u0442\u043D\u0435\u0441-\u0446\u0435\u043D\u0442\u0440\u0435 \u0434\u0440\u0435\u0441\u0441-\u043A\u043E\u0434?",description:"\u0414\u043B\u044F \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043E\u043A \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0438\u043C\u0435\u0442\u044C \u043F\u0440\u0435\u0434\u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u0443\u044E \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0437\u0430\u043A\u0440\u044B\u0442\u0443\u044E \u0441\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u0443\u044E \u043E\u0431\u0443\u0432\u044C \u0438 \u043E\u0434\u0435\u0436\u0434\u0443. \u0412\u0435\u0440\u0445\u043D\u044F\u044F \u0438 \u043D\u0438\u0436\u043D\u044F\u044F \u0447\u0430\u0441\u0442\u0438 \u0442\u0435\u043B\u0430 \u0434\u043E\u043B\u0436\u043D\u044B \u0431\u044B\u0442\u044C \u0437\u0430\u043A\u0440\u044B\u0442\u044B (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0444\u0443\u0442\u0431\u043E\u043B\u043A\u0438, \u043C\u0430\u0439\u043A\u0438, \u0441\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u044B\u0435 \u0431\u0440\u044E\u043A\u0438, \u0448\u043E\u0440\u0442\u044B, \u043A\u0440\u043E\u0441\u0441\u043E\u0432\u043A\u0438). \u0412 \u0446\u0435\u043B\u044F\u0445 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438, \u0437\u0430\u043F\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044F \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0431\u043E\u0441\u0438\u043A\u043E\u043C, \u0432 \u043F\u043B\u044F\u0436\u043D\u044B\u0445 \u0438\u043B\u0438 \u0434\u043E\u043C\u0430\u0448\u043D\u0438\u0445 \u0442\u0430\u043F\u043E\u0447\u043A\u0430\u0445 \u0438 \u0442. \u043F., \u0438\u0441\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0441\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0435 \u043A\u043B\u0430\u0441\u0441\u044B (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0439\u043E\u0433\u0430, \u043F\u0438\u043B\u0430\u0442\u0435\u0441)."},Two:{title:"\u041C\u043E\u0436\u043D\u043E \u043B\u0438 \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442\u044C \u0441 \u0441\u043E\u0431\u043E\u0439 \u0434\u0435\u0442\u0435\u0439 \u043D\u0430 \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043A\u0438?",description:"\u0412 \u043D\u0430\u0448\u0435\u043C \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0435 \u043E\u0431\u0443\u0441\u0442\u0440\u043E\u0435\u043D\u0430 \u0434\u0435\u0442\u0441\u043A\u0430\u044F \u043A\u043E\u043C\u043D\u0430\u0442\u0430, \u0434\u043B\u044F \u043A\u043E\u043C\u0444\u043E\u0440\u0442\u043D\u043E\u0433\u043E \u043F\u0440\u0435\u0431\u044B\u0432\u0430\u043D\u0438\u044F \u0440\u0435\u0431\u0435\u043D\u043A\u0430. \u0422\u0430\u043A \u0436\u0435 \u0432 \u043D\u0430\u0448\u0438\u0445 \u0441\u043E\u0446 \u0441\u0435\u0442\u044F\u0445 \u0432\u044B\u0432\u0435\u0448\u0435\u043D\u044B \u0447\u0430\u0441\u044B \u0440\u0430\u0431\u043E\u0442\u044B \u0430\u043D\u0438\u043C\u0430\u0442\u043E\u0440\u043E\u0432."},Three:{title:"\u041A\u0430\u043A\u0438\u0435 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F \u0446\u0435\u043D\u0442\u0440\u0430?",description:"\u0415\u0441\u0442\u044C \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u043F\u0440\u0430\u0432\u0438\u043B \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0441\u043E\u0431\u043B\u044E\u0441\u0442\u0438 \u043F\u0435\u0440\u0435\u0434 \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043A\u043E\u0439. \u0423 \u0432\u0430\u0441 \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0441 \u0441\u043E\u0431\u043E\u0439 \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043E\u0447\u043D\u0430\u044F \u0444\u043E\u0440\u043C\u0430. \u041C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0430\u044F \u0441\u043F\u0440\u0430\u0432\u043A\u0430 \u043E \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0438\u0439 \u043F\u0440\u043E\u0442\u0438\u0432\u043E\u043F\u043E\u043A\u0430\u0437\u0430\u043D\u0438\u0439. \u0417\u0430\u043F\u0440\u0435\u0449\u0435\u043D\u043E \u043F\u0440\u0438\u043D\u043E\u0441\u0438\u0442\u044C \u043F\u0440\u043E\u0434\u0443\u043A\u0442\u044B \u043F\u0438\u0442\u0430\u043D\u0438\u044F \u0441 \u0441\u043E\u0431\u043E\u0439. \u0414\u043B\u044F \u0434\u0435\u0442\u0435\u0439 \u0440\u0430\u0437\u043D\u044B\u0445 \u0432\u043E\u0437\u0440\u0430\u0441\u0442\u043E\u0432 \u0435\u0441\u0442\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u044F \u043D\u0430 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0441\u0435\u043A\u0446\u0438\u0438 \u0437\u0430\u043B\u0430."},Four:{title:"\u041D\u0443\u0436\u043D\u0430 \u043B\u0438 \u043C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0430\u044F \u0441\u043F\u0440\u0430\u0432\u043A\u0430 \u0434\u043B\u044F \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F \u0437\u0430\u043B\u043E\u0432 \u0438 \u0431\u0430\u0441\u0441\u0435\u0439\u043D\u0430?",description:"\u0414\u043B\u044F \u043E\u0431\u0449\u0435\u0433\u043E \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F \u0442\u0440\u0435\u043D\u0430\u0436\u0435\u0440\u043D\u043E\u0433\u043E \u0437\u0430\u043B\u0430 \u0441\u043F\u0440\u0430\u0432\u043A\u0430 \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F. \u041E\u0434\u043D\u0430\u043A\u043E, \u0435\u0441\u043B\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u043C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0438\u0435 \u0443\u0441\u043B\u043E\u0432\u0438\u044F \u0438\u043B\u0438 \u0437\u0430\u0431\u043E\u043B\u0435\u0432\u0430\u043D\u0438\u044F, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0433\u0443\u0442 \u043F\u043E\u0432\u043B\u0438\u044F\u0442\u044C \u043D\u0430 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u044C \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043E\u043A, \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u043E\u0432\u0430\u043D\u043E \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0441\u043F\u0440\u0430\u0432\u043A\u0443 \u043E\u0442 \u0432\u0440\u0430\u0447\u0430. \u0414\u043B\u044F \u0431\u0430\u0441\u0441\u0435\u0439\u043D\u0430 \u0441\u043F\u0440\u0430\u0432\u043A\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u043C \u043F\u043E\u0440\u044F\u0434\u043A\u0435."}}},i={center:"faq__button--center",subscription:"faq__button--subscription",services:"faq__button--services",rules:"faq__button--rules"};var a=document.querySelectorAll(".faq__info-item"),n=document.querySelectorAll(".faq__button"),l=()=>{a.forEach(t=>{t.querySelector("button").addEventListener("click",()=>{t.classList.contains("faq__info-item--active")?t.classList.remove("faq__info-item--active"):t.classList.add("faq__info-item--active")})})},u=()=>{n.forEach(t=>{t.addEventListener("click",()=>{n.forEach(s=>{s.classList.remove("faq__button--active")}),t.classList.add("faq__button--active");let e,r=0;switch(t.classList[1]){case i.center:e="Center";break;case i.subscription:e="Subscription";break;case i.services:e="Services";break;case i.rules:e="Rules";break;default:}let c=Object.values(o[e]);a.forEach(s=>{s.querySelector("h3").innerHTML=c[r].title,s.querySelector("p").innerHTML=c[r].description,r++})})})},f=()=>{l(),u()};export{f as faqInteract}; diff --git a/docs/scripts/form-validate.js b/docs/scripts/form-validate.js new file mode 100644 index 0000000..53cc8d8 --- /dev/null +++ b/docs/scripts/form-validate.js @@ -0,0 +1 @@ +var e=document.querySelector(".form__form"),n=e.querySelector(".form__button-submit"),t=e.querySelector(".form__input--name"),r=e.querySelector(".form__input--tel"),i=e.querySelector(".form__wrong-message--tel"),m=e.querySelector(".form__wrong-message--name"),u=e.querySelector(".form__congratulation-message"),c=/^\+?[0-9]{1,30}$/,_=/^\+?[0-9]{11}$/,f=/^[^\s][a-z а-яё]{1,30}[^\s]$/i,d=/^[a-z а-яё]{1,30}$/i,s=(o,a,l)=>{o.innerHTML=a,l.classList.add("form__input--error")},p=()=>{u.innerHTML="\u0424\u043E\u0440\u043C\u0430 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0430!",n.classList.add("form__button-submit--sent"),setTimeout(()=>{n.classList.remove("form__button-submit--sent"),u.innerHTML=""},5*1e3)};e.addEventListener("submit",o=>{if(o.preventDefault(),c.test(r.value))r.classList.remove("form__input--error");else{s(i,"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0446\u0438\u0444\u0440\u044B",r);return}if(_.test(r.value))r.classList.remove("form__input--error");else{s(i,"\u041D\u043E\u043C\u0435\u0440 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 11 \u0446\u0438\u0444\u0440",r);return}if(d.test(t.value))t.classList.remove("form__input--error");else{s(m,"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0411\u0443\u043A\u0432\u044B",t);return}if(f.test(t.value))t.classList.remove("form__input--error");else{s(m,"\u0423\u0431\u0435\u0440\u0438\u0442\u0435 \u043B\u0438\u0448\u043D\u0438\u0438 \u043F\u0440\u043E\u0431\u0435\u043B\u044B",t);return}n.disabled=!0,fetch("https://echo.htmlacademy.ru/.",{method:"POST",body:new FormData(o.target)}).then(a=>{if(!a.ok)throw new Error("\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0444\u043E\u0440\u043C\u0443. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437")}).then(p()).finally(n.disabled=!1)}); diff --git a/docs/scripts/main.js b/docs/scripts/main.js new file mode 100644 index 0000000..82b0048 --- /dev/null +++ b/docs/scripts/main.js @@ -0,0 +1 @@ +var Q=document.querySelector(".about-us__link"),it=document.querySelector(".about-us__play-button"),rt=()=>{let s=document.createElement("iframe");s.classList.add("about-us__video"),s.setAttribute("title","\u0412\u0438\u0434\u0435\u043E \u043E \u043D\u0430\u0448\u0435\u043C \u0441\u043F\u043E\u0440\u0442 \u0437\u0430\u043B\u0435"),s.setAttribute("src",Q.dataset.href),s.setAttribute("allow","accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"),s.setAttribute("referrerpolicy","strict-origin-when-cross-origin"),s.setAttribute("allowfullscreen",""),Q.appendChild(s)},Ce=()=>{Q.addEventListener("click",()=>{Q.removeAttribute("href"),it.remove(),rt()})};var le={oneMonth:{coachRate:5e3,daytimeRate:1700,fullDayRate:2700},sixMonth:{coachRate:3e4,daytimeRate:10200,fullDayRate:16200},twelveMonth:{coachRate:6e4,daytimeRate:20400,fullDayRate:32400}},de={abonementOneMonth:"1 \u043C\u0435\u0441\u044F\u0446",abonementSixMonth:"6 \u043C\u0435\u0441\u044F\u0446\u0435\u0432",abonementTwelveMonth:"12 \u043C\u0435\u0441\u044F\u0446\u0435\u0432"},B={oneMonth:0,sixMonth:1,twelveMonth:2},Me=document.querySelectorAll(".abonements__duration-button"),Z=document.querySelectorAll(".abonements__cost-background"),ee=document.querySelectorAll(".abonements__cost-current"),nt=[le.oneMonth,le.sixMonth,le.twelveMonth],N=(s,e)=>{s.forEach((t,i)=>{let n=Object.entries(nt[e]);t.innerHTML=n[i][1]})},Le=()=>{Me.forEach(s=>{s.addEventListener("click",e=>{switch(Me.forEach(t=>t.classList.remove("abonements__duration-button--active")),s.classList.add("abonements__duration-button--active"),e.target.innerHTML){case de.abonementOneMonth:N(Z,B.oneMonth),N(ee,B.oneMonth);break;case de.abonementSixMonth:N(Z,B.sixMonth),N(ee,B.sixMonth);break;case de.abonementTwelveMonth:N(Z,B.twelveMonth),N(ee,B.twelveMonth);break;default:N(Z,B.oneMonth),N(ee,B.oneMonth)}})})};function Pe(s){return s!==null&&typeof s=="object"&&"constructor"in s&&s.constructor===Object}function ce(s,e){s===void 0&&(s={}),e===void 0&&(e={}),Object.keys(e).forEach(t=>{s[t]===void 0?s[t]=e[t]:Pe(e[t])&&Pe(s[t])&&Object.keys(e[t]).length>0&&ce(s[t],e[t])})}var ke={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function F(){let s=typeof document<"u"?document:{};return ce(s,ke),s}var at={document:ke,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:s=>typeof setTimeout>"u"?(s(),null):setTimeout(s,0),cancelAnimationFrame(s){typeof setTimeout<"u"&&clearTimeout(s)}};function O(){let s=typeof window<"u"?window:{};return ce(s,at),s}function ot(s){return s===void 0&&(s=""),s.trim().split(" ").filter(e=>!!e.trim())}function Ie(s){let e=s;Object.keys(e).forEach(t=>{try{e[t]=null}catch{}try{delete e[t]}catch{}})}function se(s,e){return e===void 0&&(e=0),setTimeout(s,e)}function Y(){return Date.now()}function lt(s){let e=O(),t;return e.getComputedStyle&&(t=e.getComputedStyle(s,null)),!t&&s.currentStyle&&(t=s.currentStyle),t||(t=s.style),t}function Ae(s,e){e===void 0&&(e="x");let t=O(),i,n,r,l=lt(s);return t.WebKitCSSMatrix?(n=l.transform||l.webkitTransform,n.split(",").length>6&&(n=n.split(", ").map(a=>a.replace(",",".")).join(", ")),r=new t.WebKitCSSMatrix(n==="none"?"":n)):(r=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=r.toString().split(",")),e==="x"&&(n=t.WebKitCSSMatrix?r.m41:i.length===16?parseFloat(i[12]):parseFloat(i[4])),e==="y"&&(n=t.WebKitCSSMatrix?r.m42:i.length===16?parseFloat(i[13]):parseFloat(i[5])),n||0}function te(s){return typeof s=="object"&&s!==null&&s.constructor&&Object.prototype.toString.call(s).slice(8,-1)==="Object"}function dt(s){return typeof window<"u"&&window.HTMLElement!==void 0?s instanceof HTMLElement:s&&(s.nodeType===1||s.nodeType===11)}function _(){let s=Object(arguments.length<=0?void 0:arguments[0]),e=["__proto__","constructor","prototype"];for(let t=1;te.indexOf(r)<0);for(let r=0,l=n.length;rr?"next":"prev",u=(v,m)=>c==="next"&&v>=m||c==="prev"&&v<=m,h=()=>{l=new Date().getTime(),a===null&&(a=l);let v=Math.max(Math.min((l-a)/o,1),0),m=.5-Math.cos(v*Math.PI)/2,f=r+m*(t-r);if(u(f,t)&&(f=t),e.wrapperEl.scrollTo({[i]:f}),u(f,t))return e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.scrollSnapType="",setTimeout(()=>{e.wrapperEl.style.overflow="",e.wrapperEl.scrollTo({[i]:f})}),void n.cancelAnimationFrame(e.cssModeFrameID);e.cssModeFrameID=n.requestAnimationFrame(h)};h()}function z(s,e){e===void 0&&(e="");let t=[...s.children];return s instanceof HTMLSlotElement&&t.push(...s.assignedElements()),e?t.filter(i=>i.matches(e)):t}function Oe(s,e){let t=e.contains(s);return!t&&e instanceof HTMLSlotElement?[...element.assignedElements()].includes(s):t}function U(s){try{return void console.warn(s)}catch{}}function V(s,e){e===void 0&&(e=[]);let t=document.createElement(s);return t.classList.add(...Array.isArray(e)?e:ot(e)),t}function _e(s,e){let t=[];for(;s.previousElementSibling;){let i=s.previousElementSibling;e?i.matches(e)&&t.push(i):t.push(i),s=i}return t}function ze(s,e){let t=[];for(;s.nextElementSibling;){let i=s.nextElementSibling;e?i.matches(e)&&t.push(i):t.push(i),s=i}return t}function G(s,e){return O().getComputedStyle(s,null).getPropertyValue(e)}function R(s){let e,t=s;if(t){for(e=0;(t=t.previousSibling)!==null;)t.nodeType===1&&(e+=1);return e}}function ie(s,e){let t=[],i=s.parentElement;for(;i;)e?i.matches(e)&&t.push(i):t.push(i),i=i.parentElement;return t}function K(s,e,t){let i=O();return t?s[e==="width"?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(s,null).getPropertyValue(e==="width"?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(s,null).getPropertyValue(e==="width"?"margin-left":"margin-bottom")):s.offsetWidth}function k(s){return(Array.isArray(s)?s:[s]).filter(e=>!!e)}var ue,me,fe;function ct(){let s=O(),e=F();return{smoothScroll:e.documentElement&&e.documentElement.style&&"scrollBehavior"in e.documentElement.style,touch:!!("ontouchstart"in s||s.DocumentTouch&&e instanceof s.DocumentTouch)}}function Fe(){return ue||(ue=ct()),ue}function pt(s){let{userAgent:e}=s===void 0?{}:s,t=Fe(),i=O(),n=i.navigator.platform,r=e||i.navigator.userAgent,l={ios:!1,android:!1},a=i.screen.width,o=i.screen.height,c=r.match(/(Android);?[\s\/]+([\d.]+)?/),u=r.match(/(iPad).*OS\s([\d_]+)/),h=r.match(/(iPod)(.*OS\s([\d_]+))?/),v=!u&&r.match(/(iPhone\sOS|iOS)\s([\d_]+)/),m=n==="Win32",f=n==="MacIntel";return!u&&f&&t.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${a}x${o}`)>=0&&(u=r.match(/(Version)\/([\d.]+)/),u||(u=[0,1,"13_0_0"]),f=!1),c&&!m&&(l.os="android",l.android=!0),(u||v||h)&&(l.os="ios",l.ios=!0),l}function qe(s){return s===void 0&&(s={}),me||(me=pt(s)),me}function ut(){let s=O(),e=qe(),t=!1;function i(){let l=s.navigator.userAgent.toLowerCase();return l.indexOf("safari")>=0&&l.indexOf("chrome")<0&&l.indexOf("android")<0}if(i()){let l=String(s.navigator.userAgent);if(l.includes("Version/")){let[a,o]=l.split("Version/")[1].split(" ")[0].split(".").map(c=>Number(c));t=a<16||a===16&&o<2}}let n=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(s.navigator.userAgent),r=i();return{isSafari:t||r,needPerspectiveFix:t,need3dFix:r||n&&e.ios,isWebView:n}}function mt(){return fe||(fe=ut()),fe}function ft(s){let{swiper:e,on:t,emit:i}=s,n=O(),r=null,l=null,a=()=>{e&&!e.destroyed&&e.initialized&&(i("beforeResize"),i("resize"))},o=()=>{e&&!e.destroyed&&e.initialized&&i("orientationchange")};t("init",()=>{e.params.resizeObserver&&n.ResizeObserver!==void 0?e&&!e.destroyed&&e.initialized&&(r=new ResizeObserver(c=>{l=n.requestAnimationFrame(()=>{let{width:u,height:h}=e,v=u,m=h;c.forEach(f=>{let{contentBoxSize:S,contentRect:d,target:p}=f;p&&p!==e.el||(v=d?d.width:(S[0]||S).inlineSize,m=d?d.height:(S[0]||S).blockSize)}),v===u&&m===h||a()})}),r.observe(e.el)):(n.addEventListener("resize",a),n.addEventListener("orientationchange",o))}),t("destroy",()=>{l&&n.cancelAnimationFrame(l),r&&r.unobserve&&e.el&&(r.unobserve(e.el),r=null),n.removeEventListener("resize",a),n.removeEventListener("orientationchange",o)})}function ht(s){let{swiper:e,extendParams:t,on:i,emit:n}=s,r=[],l=O(),a=function(o,c){c===void 0&&(c={});let u=new(l.MutationObserver||l.WebkitMutationObserver)(h=>{if(e.__preventObserver__)return;if(h.length===1)return void n("observerUpdate",h[0]);let v=function(){n("observerUpdate",h[0])};l.requestAnimationFrame?l.requestAnimationFrame(v):l.setTimeout(v,0)});u.observe(o,{attributes:c.attributes===void 0||c.attributes,childList:e.isElement||(c.childList===void 0||c).childList,characterData:c.characterData===void 0||c.characterData}),r.push(u)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",()=>{if(e.params.observer){if(e.params.observeParents){let o=ie(e.hostEl);for(let c=0;c{r.forEach(o=>{o.disconnect()}),r.splice(0,r.length)})}var vt={on(s,e,t){let i=this;if(!i.eventsListeners||i.destroyed||typeof e!="function")return i;let n=t?"unshift":"push";return s.split(" ").forEach(r=>{i.eventsListeners[r]||(i.eventsListeners[r]=[]),i.eventsListeners[r][n](e)}),i},once(s,e,t){let i=this;if(!i.eventsListeners||i.destroyed||typeof e!="function")return i;function n(){i.off(s,n),n.__emitterProxy&&delete n.__emitterProxy;for(var r=arguments.length,l=new Array(r),a=0;a=0&&e.eventsAnyListeners.splice(t,1),e},off(s,e){let t=this;return!t.eventsListeners||t.destroyed||t.eventsListeners&&s.split(" ").forEach(i=>{e===void 0?t.eventsListeners[i]=[]:t.eventsListeners[i]&&t.eventsListeners[i].forEach((n,r)=>{(n===e||n.__emitterProxy&&n.__emitterProxy===e)&&t.eventsListeners[i].splice(r,1)})}),t},emit(){let s=this;if(!s.eventsListeners||s.destroyed||!s.eventsListeners)return s;let e,t,i;for(var n=arguments.length,r=new Array(n),l=0;l{s.eventsAnyListeners&&s.eventsAnyListeners.length&&s.eventsAnyListeners.forEach(o=>{o.apply(i,[a,...t])}),s.eventsListeners&&s.eventsListeners[a]&&s.eventsListeners[a].forEach(o=>{o.apply(i,t)})}),s}};function gt(){let s=this,e,t,i=s.el;e=s.params.width!==void 0&&s.params.width!==null?s.params.width:i.clientWidth,t=s.params.height!==void 0&&s.params.height!==null?s.params.height:i.clientHeight,e===0&&s.isHorizontal()||t===0&&s.isVertical()||(e=e-parseInt(G(i,"padding-left")||0,10)-parseInt(G(i,"padding-right")||0,10),t=t-parseInt(G(i,"padding-top")||0,10)-parseInt(G(i,"padding-bottom")||0,10),Number.isNaN(e)&&(e=0),Number.isNaN(t)&&(t=0),Object.assign(s,{width:e,height:t,size:s.isHorizontal()?e:t}))}function wt(){let s=this;function e(x,y){return parseFloat(x.getPropertyValue(s.getDirectionLabel(y))||0)}let t=s.params,{wrapperEl:i,slidesEl:n,size:r,rtlTranslate:l,wrongRTL:a}=s,o=s.virtual&&t.virtual.enabled,c=o?s.virtual.slides.length:s.slides.length,u=z(n,`.${s.params.slideClass}, swiper-slide`),h=o?s.virtual.slides.length:u.length,v=[],m=[],f=[],S=t.slidesOffsetBefore;typeof S=="function"&&(S=t.slidesOffsetBefore.call(s));let d=t.slidesOffsetAfter;typeof d=="function"&&(d=t.slidesOffsetAfter.call(s));let p=s.snapGrid.length,g=s.slidesGrid.length,b=t.spaceBetween,w=-S,C=0,A=0;if(r===void 0)return;typeof b=="string"&&b.indexOf("%")>=0?b=parseFloat(b.replace("%",""))/100*r:typeof b=="string"&&(b=parseFloat(b)),s.virtualSize=-b,u.forEach(x=>{l?x.style.marginLeft="":x.style.marginRight="",x.style.marginBottom="",x.style.marginTop=""}),t.centeredSlides&&t.cssMode&&(X(i,"--swiper-centered-offset-before",""),X(i,"--swiper-centered-offset-after",""));let L=t.grid&&t.grid.rows>1&&s.grid,M;L?s.grid.initSlides(u):s.grid&&s.grid.unsetSlides();let P=t.slidesPerView==="auto"&&t.breakpoints&&Object.keys(t.breakpoints).filter(x=>t.breakpoints[x].slidesPerView!==void 0).length>0;for(let x=0;x1&&v.push(s.virtualSize-r)}if(o&&t.loop){let x=f[0]+b;if(t.slidesPerGroup>1){let y=Math.ceil((s.virtual.slidesBefore+s.virtual.slidesAfter)/t.slidesPerGroup),T=x*t.slidesPerGroup;for(let E=0;E!(t.cssMode&&!t.loop)||T!==u.length-1).forEach(y=>{y.style[x]=`${b}px`})}if(t.centeredSlides&&t.centeredSlidesBounds){let x=0;f.forEach(T=>{x+=T+(b||0)}),x-=b;let y=x-r;v=v.map(T=>T<=0?-S:T>y?y+d:T)}if(t.centerInsufficientSlides){let x=0;f.forEach(T=>{x+=T+(b||0)}),x-=b;let y=(t.slidesOffsetBefore||0)+(t.slidesOffsetAfter||0);if(x+y{v[I]=E-T}),m.forEach((E,I)=>{m[I]=E+T})}}if(Object.assign(s,{slides:u,snapGrid:v,slidesGrid:m,slidesSizesGrid:f}),t.centeredSlides&&t.cssMode&&!t.centeredSlidesBounds){X(i,"--swiper-centered-offset-before",-v[0]+"px"),X(i,"--swiper-centered-offset-after",s.size/2-f[f.length-1]/2+"px");let x=-s.snapGrid[0],y=-s.slidesGrid[0];s.snapGrid=s.snapGrid.map(T=>T+x),s.slidesGrid=s.slidesGrid.map(T=>T+y)}if(h!==c&&s.emit("slidesLengthChange"),v.length!==p&&(s.params.watchOverflow&&s.checkOverflow(),s.emit("snapGridLengthChange")),m.length!==g&&s.emit("slidesGridLengthChange"),t.watchSlidesProgress&&s.updateSlidesOffset(),s.emit("slidesUpdated"),!(o||t.cssMode||t.effect!=="slide"&&t.effect!=="fade")){let x=`${t.containerModifierClass}backface-hidden`,y=s.el.classList.contains(x);h<=t.maxBackfaceHiddenSlides?y||s.el.classList.add(x):y&&s.el.classList.remove(x)}}function bt(s){let e=this,t=[],i=e.virtual&&e.params.virtual.enabled,n,r=0;typeof s=="number"?e.setTransition(s):s===!0&&e.setTransition(e.params.speed);let l=a=>i?e.slides[e.getSlideIndexByData(a)]:e.slides[a];if(e.params.slidesPerView!=="auto"&&e.params.slidesPerView>1)if(e.params.centeredSlides)(e.visibleSlides||[]).forEach(a=>{t.push(a)});else for(n=0;ne.slides.length&&!i)break;t.push(l(a))}else t.push(l(e.activeIndex));for(n=0;nr?a:r}(r||r===0)&&(e.wrapperEl.style.height=`${r}px`)}function St(){let s=this,e=s.slides,t=s.isElement?s.isHorizontal()?s.wrapperEl.offsetLeft:s.wrapperEl.offsetTop:0;for(let i=0;i{e&&!s.classList.contains(t)?s.classList.add(t):!e&&s.classList.contains(t)&&s.classList.remove(t)};function Tt(s){s===void 0&&(s=this&&this.translate||0);let e=this,t=e.params,{slides:i,rtlTranslate:n,snapGrid:r}=e;if(i.length===0)return;i[0].swiperSlideOffset===void 0&&e.updateSlidesOffset();let l=-s;n&&(l=s),e.visibleSlidesIndexes=[],e.visibleSlides=[];let a=t.spaceBetween;typeof a=="string"&&a.indexOf("%")>=0?a=parseFloat(a.replace("%",""))/100*e.size:typeof a=="string"&&(a=parseFloat(a));for(let o=0;o=0&&m<=e.size-e.slidesSizesGrid[o],d=m>=0&&m1&&f<=e.size||m<=0&&f>=e.size;d&&(e.visibleSlides.push(c),e.visibleSlidesIndexes.push(o)),De(c,d,t.slideVisibleClass),De(c,S,t.slideFullyVisibleClass),c.progress=n?-h:h,c.originalProgress=n?-v:v}}function yt(s){let e=this;if(s===void 0){let u=e.rtlTranslate?-1:1;s=e&&e.translate&&e.translate*u||0}let t=e.params,i=e.maxTranslate()-e.minTranslate(),{progress:n,isBeginning:r,isEnd:l,progressLoop:a}=e,o=r,c=l;if(i===0)n=0,r=!0,l=!0;else{n=(s-e.minTranslate())/i;let u=Math.abs(s-e.minTranslate())<1,h=Math.abs(s-e.maxTranslate())<1;r=u||n<=0,l=h||n>=1,u&&(n=0),h&&(n=1)}if(t.loop){let u=e.getSlideIndexByData(0),h=e.getSlideIndexByData(e.slides.length-1),v=e.slidesGrid[u],m=e.slidesGrid[h],f=e.slidesGrid[e.slidesGrid.length-1],S=Math.abs(s);a=S>=v?(S-v)/f:(S+f-m)/f,a>1&&(a-=1)}Object.assign(e,{progress:n,progressLoop:a,isBeginning:r,isEnd:l}),(t.watchSlidesProgress||t.centeredSlides&&t.autoHeight)&&e.updateSlidesProgress(s),r&&!o&&e.emit("reachBeginning toEdge"),l&&!c&&e.emit("reachEnd toEdge"),(o&&!r||c&&!l)&&e.emit("fromEdge"),e.emit("progress",n)}var he=(s,e,t)=>{e&&!s.classList.contains(t)?s.classList.add(t):!e&&s.classList.contains(t)&&s.classList.remove(t)};function xt(){let s=this,{slides:e,params:t,slidesEl:i,activeIndex:n}=s,r=s.virtual&&t.virtual.enabled,l=s.grid&&t.grid&&t.grid.rows>1,a=h=>z(i,`.${t.slideClass}${h}, swiper-slide${h}`)[0],o,c,u;if(r)if(t.loop){let h=n-s.virtual.slidesBefore;h<0&&(h=s.virtual.slides.length+h),h>=s.virtual.slides.length&&(h-=s.virtual.slides.length),o=a(`[data-swiper-slide-index="${h}"]`)}else o=a(`[data-swiper-slide-index="${n}"]`);else l?(o=e.filter(h=>h.column===n)[0],u=e.filter(h=>h.column===n+1)[0],c=e.filter(h=>h.column===n-1)[0]):o=e[n];o&&(l||(u=ze(o,`.${t.slideClass}, swiper-slide`)[0],t.loop&&!u&&(u=e[0]),c=_e(o,`.${t.slideClass}, swiper-slide`)[0],t.loop&&!c===0&&(c=e[e.length-1]))),e.forEach(h=>{he(h,h===o,t.slideActiveClass),he(h,h===u,t.slideNextClass),he(h,h===c,t.slidePrevClass)}),s.emitSlidesClasses()}var re=(s,e)=>{if(!s||s.destroyed||!s.params)return;let t=e.closest(s.isElement?"swiper-slide":`.${s.params.slideClass}`);if(t){let i=t.querySelector(`.${s.params.lazyPreloaderClass}`);!i&&s.isElement&&(t.shadowRoot?i=t.shadowRoot.querySelector(`.${s.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{t.shadowRoot&&(i=t.shadowRoot.querySelector(`.${s.params.lazyPreloaderClass}`),i&&i.remove())})),i&&i.remove()}},ve=(s,e)=>{if(!s.slides[e])return;let t=s.slides[e].querySelector('[loading="lazy"]');t&&t.removeAttribute("loading")},be=s=>{if(!s||s.destroyed||!s.params)return;let e=s.params.lazyPreloadPrevNext,t=s.slides.length;if(!t||!e||e<0)return;e=Math.min(e,t);let i=s.params.slidesPerView==="auto"?s.slidesPerViewDynamic():Math.ceil(s.params.slidesPerView),n=s.activeIndex;if(s.params.grid&&s.params.grid.rows>1){let l=n,a=[l-e];return a.push(...Array.from({length:e}).map((o,c)=>l+i+c)),void s.slides.forEach((o,c)=>{a.includes(o.column)&&ve(s,c)})}let r=n+i-1;if(s.params.rewind||s.params.loop)for(let l=n-e;l<=r+e;l+=1){let a=(l%t+t)%t;(ar)&&ve(s,a)}else for(let l=Math.max(n-e,0);l<=Math.min(r+e,t-1);l+=1)l!==n&&(l>r||l=e[r]&&i=e[r]&&i=e[r]&&(n=r);return t.normalizeSlideIndex&&(n<0||n===void 0)&&(n=0),n}function Ct(s){let e=this,t=e.rtlTranslate?e.translate:-e.translate,{snapGrid:i,params:n,activeIndex:r,realIndex:l,snapIndex:a}=e,o,c=s,u=m=>{let f=m-e.virtual.slidesBefore;return f<0&&(f=e.virtual.slides.length+f),f>=e.virtual.slides.length&&(f-=e.virtual.slides.length),f};if(c===void 0&&(c=Et(e)),i.indexOf(t)>=0)o=i.indexOf(t);else{let m=Math.min(n.slidesPerGroupSkip,c);o=m+Math.floor((c-m)/n.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),c===r&&!e.params.loop)return void(o!==a&&(e.snapIndex=o,e.emit("snapIndexChange")));if(c===r&&e.params.loop&&e.virtual&&e.params.virtual.enabled)return void(e.realIndex=u(c));let h=e.grid&&n.grid&&n.grid.rows>1,v;if(e.virtual&&n.virtual.enabled&&n.loop)v=u(c);else if(h){let m=e.slides.filter(S=>S.column===c)[0],f=parseInt(m.getAttribute("data-swiper-slide-index"),10);Number.isNaN(f)&&(f=Math.max(e.slides.indexOf(m),0)),v=Math.floor(f/n.grid.rows)}else if(e.slides[c]){let m=e.slides[c].getAttribute("data-swiper-slide-index");v=m?parseInt(m,10):c}else v=c;Object.assign(e,{previousSnapIndex:a,snapIndex:o,previousRealIndex:l,realIndex:v,previousIndex:r,activeIndex:c}),e.initialized&&be(e),e.emit("activeIndexChange"),e.emit("snapIndexChange"),(e.initialized||e.params.runCallbacksOnInit)&&(l!==v&&e.emit("realIndexChange"),e.emit("slideChange"))}function Mt(s,e){let t=this,i=t.params,n=s.closest(`.${i.slideClass}, swiper-slide`);!n&&t.isElement&&e&&e.length>1&&e.includes(s)&&[...e.slice(e.indexOf(s)+1,e.length)].forEach(a=>{!n&&a.matches&&a.matches(`.${i.slideClass}, swiper-slide`)&&(n=a)});let r,l=!1;if(n){for(let a=0;ao?o:i&&sl?"next":r=o.length&&(d=o.length-1);let p=-o[d];if(a.normalizeSlideIndex)for(let b=0;b=C&&w=C&&w=C&&(l=b)}if(r.initialized&&l!==h&&(!r.allowSlideNext&&(v?p>r.translate&&p>r.minTranslate():pr.translate&&p>r.maxTranslate()&&(h||0)!==l))return!1;let g;if(l!==(u||0)&&t&&r.emit("beforeSlideChangeStart"),r.updateProgress(p),g=l>h?"next":l0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{m[b?"scrollLeft":"scrollTop"]=w})):m[b?"scrollLeft":"scrollTop"]=w,C&&requestAnimationFrame(()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1})}else{if(!r.support.smoothScroll)return pe({swiper:r,targetPosition:w,side:b?"left":"top"}),!0;m.scrollTo({[b?"left":"top"]:w,behavior:"smooth"})}return!0}return r.setTransition(e),r.setTranslate(p),r.updateActiveIndex(l),r.updateSlidesClasses(),r.emit("beforeTransitionStart",e,i),r.transitionStart(t,g),e===0?r.transitionEnd(t,g):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(b){r&&!r.destroyed&&b.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(t,g))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0}function Nt(s,e,t,i){s===void 0&&(s=0),t===void 0&&(t=!0),typeof s=="string"&&(s=parseInt(s,10));let n=this;if(n.destroyed)return;e===void 0&&(e=n.params.speed);let r=n.grid&&n.params.grid&&n.params.grid.rows>1,l=s;if(n.params.loop)if(n.virtual&&n.params.virtual.enabled)l+=n.virtual.slidesBefore;else{let a;if(r){let v=l*n.params.grid.rows;a=n.slides.filter(m=>1*m.getAttribute("data-swiper-slide-index")===v)[0].column}else a=n.getSlideIndexByData(l);let o=r?Math.ceil(n.slides.length/n.params.grid.rows):n.slides.length,{centeredSlides:c}=n.params,u=n.params.slidesPerView;u==="auto"?u=n.slidesPerViewDynamic():(u=Math.ceil(parseFloat(n.params.slidesPerView,10)),c&&u%2==0&&(u+=1));let h=o-a1*m.getAttribute("data-swiper-slide-index")===v)[0].column}else l=n.getSlideIndexByData(l)}return requestAnimationFrame(()=>{n.slideTo(l,e,t,i)}),n}function Ft(s,e,t){e===void 0&&(e=!0);let i=this,{enabled:n,params:r,animating:l}=i;if(!n||i.destroyed)return i;s===void 0&&(s=i.params.speed);let a=r.slidesPerGroup;r.slidesPerView==="auto"&&r.slidesPerGroup===1&&r.slidesPerGroupAuto&&(a=Math.max(i.slidesPerViewDynamic("current",!0),1));let o=i.activeIndex{i.slideTo(i.activeIndex+o,s,e,t)}),!0}return r.rewind&&i.isEnd?i.slideTo(0,s,e,t):i.slideTo(i.activeIndex+o,s,e,t)}function qt(s,e,t){e===void 0&&(e=!0);let i=this,{params:n,snapGrid:r,slidesGrid:l,rtlTranslate:a,enabled:o,animating:c}=i;if(!o||i.destroyed)return i;s===void 0&&(s=i.params.speed);let u=i.virtual&&n.virtual.enabled;if(n.loop){if(c&&!u&&n.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function h(d){return d<0?-Math.floor(Math.abs(d)):Math.floor(d)}let v=h(a?i.translate:-i.translate),m=r.map(d=>h(d)),f=r[m.indexOf(v)-1];if(f===void 0&&n.cssMode){let d;r.forEach((p,g)=>{v>=p&&(d=g)}),d!==void 0&&(f=r[d>0?d-1:d])}let S=0;if(f!==void 0&&(S=l.indexOf(f),S<0&&(S=i.activeIndex-1),n.slidesPerView==="auto"&&n.slidesPerGroup===1&&n.slidesPerGroupAuto&&(S=S-i.slidesPerViewDynamic("previous",!0)+1,S=Math.max(S,0))),n.rewind&&i.isBeginning){let d=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(d,s,e,t)}return n.loop&&i.activeIndex===0&&n.cssMode?(requestAnimationFrame(()=>{i.slideTo(S,s,e,t)}),!0):i.slideTo(S,s,e,t)}function Vt(s,e,t){e===void 0&&(e=!0);let i=this;if(!i.destroyed)return s===void 0&&(s=i.params.speed),i.slideTo(i.activeIndex,s,e,t)}function Rt(s,e,t,i){e===void 0&&(e=!0),i===void 0&&(i=.5);let n=this;if(n.destroyed)return;s===void 0&&(s=n.params.speed);let r=n.activeIndex,l=Math.min(n.params.slidesPerGroupSkip,r),a=l+Math.floor((r-l)/n.params.slidesPerGroup),o=n.rtlTranslate?n.translate:-n.translate;if(o>=n.snapGrid[a]){let c=n.snapGrid[a];o-c>(n.snapGrid[a+1]-c)*i&&(r+=n.params.slidesPerGroup)}else{let c=n.snapGrid[a-1];o-c<=(n.snapGrid[a]-c)*i&&(r-=n.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,n.slidesGrid.length-1),n.slideTo(r,s,e,t)}function Ht(){let s=this;if(s.destroyed)return;let{params:e,slidesEl:t}=s,i=e.slidesPerView==="auto"?s.slidesPerViewDynamic():e.slidesPerView,n,r=s.clickedIndex,l=s.isElement?"swiper-slide":`.${e.slideClass}`;if(e.loop){if(s.animating)return;n=parseInt(s.clickedSlide.getAttribute("data-swiper-slide-index"),10),e.centeredSlides?rs.slides.length-s.loopedSlides+i/2?(s.loopFix(),r=s.getSlideIndex(z(t,`${l}[data-swiper-slide-index="${n}"]`)[0]),se(()=>{s.slideTo(r)})):s.slideTo(r):r>s.slides.length-i?(s.loopFix(),r=s.getSlideIndex(z(t,`${l}[data-swiper-slide-index="${n}"]`)[0]),se(()=>{s.slideTo(r)})):s.slideTo(r)}else s.slideTo(r)}var jt={slideTo:Bt,slideToLoop:Nt,slideNext:Ft,slidePrev:qt,slideReset:Vt,slideToClosest:Rt,slideToClickedSlide:Ht};function Wt(s){let e=this,{params:t,slidesEl:i}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;let n=()=>{z(i,`.${t.slideClass}, swiper-slide`).forEach((u,h)=>{u.setAttribute("data-swiper-slide-index",h)})},r=e.grid&&t.grid&&t.grid.rows>1,l=t.slidesPerGroup*(r?t.grid.rows:1),a=e.slides.length%l!=0,o=r&&e.slides.length%t.grid.rows!=0,c=u=>{for(let h=0;h1;c.lengthT.classList.contains(m.slideActiveClass))[0]):C=r;let A=i==="next"||!i,L=i==="prev"||!i,M=0,P=0,x=g?Math.ceil(c.length/m.grid.rows):c.length,y=(g?c[r].column:r)+(f&&n===void 0?-S/2+.5:0);if(y=0;D-=1)c[D].column===I&&b.push(D)}else b.push(x-E-1)}}else if(y+S>x-p){P=Math.max(y-(x-2*p),d);for(let T=0;T{I.column===E&&w.push(D)}):w.push(E)}}if(o.__preventObserver__=!0,requestAnimationFrame(()=>{o.__preventObserver__=!1}),L&&b.forEach(T=>{c[T].swiperLoopMoveDOM=!0,v.prepend(c[T]),c[T].swiperLoopMoveDOM=!1}),A&&w.forEach(T=>{c[T].swiperLoopMoveDOM=!0,v.append(c[T]),c[T].swiperLoopMoveDOM=!1}),o.recalcSlides(),m.slidesPerView==="auto"?o.updateSlides():g&&(b.length>0&&L||w.length>0&&A)&&o.slides.forEach((T,E)=>{o.grid.updateSlide(E,T,o.slides)}),m.watchSlidesProgress&&o.updateSlidesOffset(),t){if(b.length>0&&L){if(e===void 0){let T=o.slidesGrid[C],E=o.slidesGrid[C+M]-T;a?o.setTranslate(o.translate-E):(o.slideTo(C+Math.ceil(M),0,!1,!0),n&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-E,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-E))}else if(n){let T=g?b.length/m.grid.rows:b.length;o.slideTo(o.activeIndex+T,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(w.length>0&&A)if(e===void 0){let T=o.slidesGrid[C],E=o.slidesGrid[C-P]-T;a?o.setTranslate(o.translate-E):(o.slideTo(C-P,0,!1,!0),n&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-E,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-E))}else{let T=g?w.length/m.grid.rows:w.length;o.slideTo(o.activeIndex-T,0,!1,!0)}}if(o.allowSlidePrev=u,o.allowSlideNext=h,o.controller&&o.controller.control&&!l){let T={slideRealIndex:e,direction:i,setTranslate:n,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach(E=>{!E.destroyed&&E.params.loop&&E.loopFix({...T,slideTo:E.params.slidesPerView===m.slidesPerView&&t})}):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...T,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&t})}o.emit("loopFix")}function Xt(){let s=this,{params:e,slidesEl:t}=s;if(!e.loop||s.virtual&&s.params.virtual.enabled)return;s.recalcSlides();let i=[];s.slides.forEach(n=>{let r=n.swiperSlideIndex===void 0?1*n.getAttribute("data-swiper-slide-index"):n.swiperSlideIndex;i[r]=n}),s.slides.forEach(n=>{n.removeAttribute("data-swiper-slide-index")}),i.forEach(n=>{t.append(n)}),s.recalcSlides(),s.slideTo(s.realIndex,0)}var Ut={loopCreate:Wt,loopFix:Yt,loopDestroy:Xt};function Kt(s){let e=this;if(!e.params.simulateTouch||e.params.watchOverflow&&e.isLocked||e.params.cssMode)return;let t=e.params.touchEventsTarget==="container"?e.el:e.wrapperEl;e.isElement&&(e.__preventObserver__=!0),t.style.cursor="move",t.style.cursor=s?"grabbing":"grab",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1})}function Jt(){let s=this;s.params.watchOverflow&&s.isLocked||s.params.cssMode||(s.isElement&&(s.__preventObserver__=!0),s[s.params.touchEventsTarget==="container"?"el":"wrapperEl"].style.cursor="",s.isElement&&requestAnimationFrame(()=>{s.__preventObserver__=!1}))}var Qt={setGrabCursor:Kt,unsetGrabCursor:Jt};function Zt(s,e){return e===void 0&&(e=this),function t(i){if(!i||i===F()||i===O())return null;i.assignedSlot&&(i=i.assignedSlot);let n=i.closest(s);return n||i.getRootNode?n||t(i.getRootNode().host):null}(e)}function Ge(s,e,t){let i=O(),{params:n}=s,r=n.edgeSwipeDetection,l=n.edgeSwipeThreshold;return!r||!(t<=l||t>=i.innerWidth-l)||r==="prevent"&&(e.preventDefault(),!0)}function es(s){let e=this,t=F(),i=s;i.originalEvent&&(i=i.originalEvent);let n=e.touchEventsData;if(i.type==="pointerdown"){if(n.pointerId!==null&&n.pointerId!==i.pointerId)return;n.pointerId=i.pointerId}else i.type==="touchstart"&&i.targetTouches.length===1&&(n.touchId=i.targetTouches[0].identifier);if(i.type==="touchstart")return void Ge(e,i,i.targetTouches[0].pageX);let{params:r,touches:l,enabled:a}=e;if(!a||!r.simulateTouch&&i.pointerType==="mouse"||e.animating&&r.preventInteractionOnTransition)return;!e.animating&&r.cssMode&&r.loop&&e.loopFix();let o=i.target;if(r.touchEventsTarget==="wrapper"&&!Oe(o,e.wrapperEl)||"which"in i&&i.which===3||"button"in i&&i.button>0||n.isTouched&&n.isMoved)return;let c=!!r.noSwipingClass&&r.noSwipingClass!=="",u=i.composedPath?i.composedPath():i.path;c&&i.target&&i.target.shadowRoot&&u&&(o=u[0]);let h=r.noSwipingSelector?r.noSwipingSelector:`.${r.noSwipingClass}`,v=!(!i.target||!i.target.shadowRoot);if(r.noSwiping&&(v?Zt(h,o):o.closest(h)))return void(e.allowClick=!0);if(r.swipeHandler&&!o.closest(r.swipeHandler))return;l.currentX=i.pageX,l.currentY=i.pageY;let m=l.currentX,f=l.currentY;if(!Ge(e,i,m))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),l.startX=m,l.startY=f,n.touchStartTime=Y(),e.allowClick=!0,e.updateSize(),e.swipeDirection=void 0,r.threshold>0&&(n.allowThresholdMove=!1);let S=!0;o.matches(n.focusableElements)&&(S=!1,o.nodeName==="SELECT"&&(n.isTouched=!1)),t.activeElement&&t.activeElement.matches(n.focusableElements)&&t.activeElement!==o&&t.activeElement.blur();let d=S&&e.allowTouchMove&&r.touchStartPreventDefault;!r.touchStartForcePreventDefault&&!d||o.isContentEditable||i.preventDefault(),r.freeMode&&r.freeMode.enabled&&e.freeMode&&e.animating&&!r.cssMode&&e.freeMode.onTouchStart(),e.emit("touchStart",i)}function ts(s){let e=F(),t=this,i=t.touchEventsData,{params:n,touches:r,rtlTranslate:l,enabled:a}=t;if(!a||!n.simulateTouch&&s.pointerType==="mouse")return;let o,c=s;if(c.originalEvent&&(c=c.originalEvent),c.type==="pointermove"&&(i.touchId!==null||c.pointerId!==i.pointerId))return;if(c.type==="touchmove"){if(o=[...c.changedTouches].filter(C=>C.identifier===i.touchId)[0],!o||o.identifier!==i.touchId)return}else o=c;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&t.emit("touchMoveOpposite",c));let u=o.pageX,h=o.pageY;if(c.preventedByNestedSwiper)return r.startX=u,void(r.startY=h);if(!t.allowTouchMove)return c.target.matches(i.focusableElements)||(t.allowClick=!1),void(i.isTouched&&(Object.assign(r,{startX:u,startY:h,currentX:u,currentY:h}),i.touchStartTime=Y()));if(n.touchReleaseOnEdges&&!n.loop){if(t.isVertical()){if(hr.startY&&t.translate>=t.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(ur.startX&&t.translate>=t.minTranslate())return}if(e.activeElement&&c.target===e.activeElement&&c.target.matches(i.focusableElements))return i.isMoved=!0,void(t.allowClick=!1);i.allowTouchCallbacks&&t.emit("touchMove",c),r.previousX=r.currentX,r.previousY=r.currentY,r.currentX=u,r.currentY=h;let v=r.currentX-r.startX,m=r.currentY-r.startY;if(t.params.threshold&&Math.sqrt(v**2+m**2)=25&&(C=180*Math.atan2(Math.abs(m),Math.abs(v))/Math.PI,i.isScrolling=t.isHorizontal()?C>n.touchAngle:90-C>n.touchAngle)}if(i.isScrolling&&t.emit("touchMoveOpposite",c),i.startMoving===void 0&&(r.currentX===r.startX&&r.currentY===r.startY||(i.startMoving=!0)),i.isScrolling||c.type==="touchmove"&&i.preventTouchMoveFromPointerMove)return void(i.isTouched=!1);if(!i.startMoving)return;t.allowClick=!1,!n.cssMode&&c.cancelable&&c.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&c.stopPropagation();let f=t.isHorizontal()?v:m,S=t.isHorizontal()?r.currentX-r.previousX:r.currentY-r.previousY;n.oneWayMovement&&(f=Math.abs(f)*(l?1:-1),S=Math.abs(S)*(l?1:-1)),r.diff=f,f*=n.touchRatio,l&&(f=-f,S=-S);let d=t.touchesDirection;t.swipeDirection=f>0?"prev":"next",t.touchesDirection=S>0?"prev":"next";let p=t.params.loop&&!n.cssMode,g=t.touchesDirection==="next"&&t.allowSlideNext||t.touchesDirection==="prev"&&t.allowSlidePrev;if(!i.isMoved){if(p&&g&&t.loopFix({direction:t.swipeDirection}),i.startTranslate=t.getTranslate(),t.setTransition(0),t.animating){let C=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});t.wrapperEl.dispatchEvent(C)}i.allowMomentumBounce=!1,!n.grabCursor||t.allowSlideNext!==!0&&t.allowSlidePrev!==!0||t.setGrabCursor(!0),t.emit("sliderFirstMove",c)}if(new Date().getTime(),i.isMoved&&i.allowThresholdMove&&d!==t.touchesDirection&&p&&g&&Math.abs(f)>=1)return Object.assign(r,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);t.emit("sliderMove",c),i.isMoved=!0,i.currentTranslate=f+i.startTranslate;let b=!0,w=n.resistanceRatio;if(n.touchReleaseOnEdges&&(w=0),f>0?(p&&g&&i.allowThresholdMove&&i.currentTranslate>(n.centeredSlides?t.minTranslate()-t.slidesSizesGrid[t.activeIndex+1]:t.minTranslate())&&t.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>t.minTranslate()&&(b=!1,n.resistance&&(i.currentTranslate=t.minTranslate()-1+(-t.minTranslate()+i.startTranslate+f)**w))):f<0&&(p&&g&&i.allowThresholdMove&&i.currentTranslate<(n.centeredSlides?t.maxTranslate()+t.slidesSizesGrid[t.slidesSizesGrid.length-1]:t.maxTranslate())&&t.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:t.slides.length-(n.slidesPerView==="auto"?t.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),t.allowSlidePrev||t.allowSlideNext||(i.currentTranslate=i.startTranslate),n.threshold>0){if(!(Math.abs(f)>n.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,r.startX=r.currentX,r.startY=r.currentY,i.currentTranslate=i.startTranslate,void(r.diff=t.isHorizontal()?r.currentX-r.startX:r.currentY-r.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&t.freeMode||n.watchSlidesProgress)&&(t.updateActiveIndex(),t.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&t.freeMode&&t.freeMode.onTouchMove(),t.updateProgress(i.currentTranslate),t.setTranslate(i.currentTranslate))}function ss(s){let e=this,t=e.touchEventsData,i,n=s;if(n.originalEvent&&(n=n.originalEvent),n.type==="touchend"||n.type==="touchcancel"){if(i=[...n.changedTouches].filter(w=>w.identifier===t.touchId)[0],!i||i.identifier!==t.touchId)return}else{if(t.touchId!==null||n.pointerId!==t.pointerId)return;i=n}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(n.type)&&!(["pointercancel","contextmenu"].includes(n.type)&&(e.browser.isSafari||e.browser.isWebView)))return;t.pointerId=null,t.touchId=null;let{params:r,touches:l,rtlTranslate:a,slidesGrid:o,enabled:c}=e;if(!c||!r.simulateTouch&&n.pointerType==="mouse")return;if(t.allowTouchCallbacks&&e.emit("touchEnd",n),t.allowTouchCallbacks=!1,!t.isTouched)return t.isMoved&&r.grabCursor&&e.setGrabCursor(!1),t.isMoved=!1,void(t.startMoving=!1);r.grabCursor&&t.isMoved&&t.isTouched&&(e.allowSlideNext===!0||e.allowSlidePrev===!0)&&e.setGrabCursor(!1);let u=Y(),h=u-t.touchStartTime;if(e.allowClick){let w=n.path||n.composedPath&&n.composedPath();e.updateClickedSlide(w&&w[0]||n.target,w),e.emit("tap click",n),h<300&&u-t.lastClickTime<300&&e.emit("doubleTap doubleClick",n)}if(t.lastClickTime=Y(),se(()=>{e.destroyed||(e.allowClick=!0)}),!t.isTouched||!t.isMoved||!e.swipeDirection||l.diff===0&&!t.loopSwapReset||t.currentTranslate===t.startTranslate&&!t.loopSwapReset)return t.isTouched=!1,t.isMoved=!1,void(t.startMoving=!1);let v;if(t.isTouched=!1,t.isMoved=!1,t.startMoving=!1,v=r.followFinger?a?e.translate:-e.translate:-t.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void e.freeMode.onTouchEnd({currentPos:v});let m=v>=-e.maxTranslate()&&!e.params.loop,f=0,S=e.slidesSizesGrid[0];for(let w=0;w=o[w]&&v=o[w])&&(f=w,S=o[o.length-1]-o[o.length-2])}let d=null,p=null;r.rewind&&(e.isBeginning?p=r.virtual&&r.virtual.enabled&&e.virtual?e.virtual.slides.length-1:e.slides.length-1:e.isEnd&&(d=0));let g=(v-o[f])/S,b=fr.longSwipesMs){if(!r.longSwipes)return void e.slideTo(e.activeIndex);e.swipeDirection==="next"&&(g>=r.longSwipesRatio?e.slideTo(r.rewind&&e.isEnd?d:f+b):e.slideTo(f)),e.swipeDirection==="prev"&&(g>1-r.longSwipesRatio?e.slideTo(f+b):p!==null&&g<0&&Math.abs(g)>r.longSwipesRatio?e.slideTo(p):e.slideTo(f))}else{if(!r.shortSwipes)return void e.slideTo(e.activeIndex);e.navigation&&(n.target===e.navigation.nextEl||n.target===e.navigation.prevEl)?n.target===e.navigation.nextEl?e.slideTo(f+b):e.slideTo(f):(e.swipeDirection==="next"&&e.slideTo(d!==null?d:f+b),e.swipeDirection==="prev"&&e.slideTo(p!==null?p:f))}}function $e(){let s=this,{params:e,el:t}=s;if(t&&t.offsetWidth===0)return;e.breakpoints&&s.setBreakpoint();let{allowSlideNext:i,allowSlidePrev:n,snapGrid:r}=s,l=s.virtual&&s.params.virtual.enabled;s.allowSlideNext=!0,s.allowSlidePrev=!0,s.updateSize(),s.updateSlides(),s.updateSlidesClasses();let a=l&&e.loop;!(e.slidesPerView==="auto"||e.slidesPerView>1)||!s.isEnd||s.isBeginning||s.params.centeredSlides||a?s.params.loop&&!l?s.slideToLoop(s.realIndex,0,!1,!0):s.slideTo(s.activeIndex,0,!1,!0):s.slideTo(s.slides.length-1,0,!1,!0),s.autoplay&&s.autoplay.running&&s.autoplay.paused&&(clearTimeout(s.autoplay.resizeTimeout),s.autoplay.resizeTimeout=setTimeout(()=>{s.autoplay&&s.autoplay.running&&s.autoplay.paused&&s.autoplay.resume()},500)),s.allowSlidePrev=n,s.allowSlideNext=i,s.params.watchOverflow&&r!==s.snapGrid&&s.checkOverflow()}function is(s){let e=this;e.enabled&&(e.allowClick||(e.params.preventClicks&&s.preventDefault(),e.params.preventClicksPropagation&&e.animating&&(s.stopPropagation(),s.stopImmediatePropagation())))}function rs(){let s=this,{wrapperEl:e,rtlTranslate:t,enabled:i}=s;if(!i)return;let n;s.previousTranslate=s.translate,s.isHorizontal()?s.translate=-e.scrollLeft:s.translate=-e.scrollTop,s.translate===0&&(s.translate=0),s.updateActiveIndex(),s.updateSlidesClasses();let r=s.maxTranslate()-s.minTranslate();n=r===0?0:(s.translate-s.minTranslate())/r,n!==s.progress&&s.updateProgress(t?-s.translate:s.translate),s.emit("setTranslate",s.translate,!1)}function ns(s){let e=this;re(e,s.target),e.params.cssMode||e.params.slidesPerView!=="auto"&&!e.params.autoHeight||e.update()}function as(){let s=this;s.documentTouchHandlerProceeded||(s.documentTouchHandlerProceeded=!0,s.params.touchReleaseOnEdges&&(s.el.style.touchAction="auto"))}var Re=(s,e)=>{let t=F(),{params:i,el:n,wrapperEl:r,device:l}=s,a=!!i.nested,o=e==="on"?"addEventListener":"removeEventListener",c=e;n&&typeof n!="string"&&(t[o]("touchstart",s.onDocumentTouchStart,{passive:!1,capture:a}),n[o]("touchstart",s.onTouchStart,{passive:!1}),n[o]("pointerdown",s.onTouchStart,{passive:!1}),t[o]("touchmove",s.onTouchMove,{passive:!1,capture:a}),t[o]("pointermove",s.onTouchMove,{passive:!1,capture:a}),t[o]("touchend",s.onTouchEnd,{passive:!0}),t[o]("pointerup",s.onTouchEnd,{passive:!0}),t[o]("pointercancel",s.onTouchEnd,{passive:!0}),t[o]("touchcancel",s.onTouchEnd,{passive:!0}),t[o]("pointerout",s.onTouchEnd,{passive:!0}),t[o]("pointerleave",s.onTouchEnd,{passive:!0}),t[o]("contextmenu",s.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&n[o]("click",s.onClick,!0),i.cssMode&&r[o]("scroll",s.onScroll),i.updateOnWindowResize?s[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",$e,!0):s[c]("observerUpdate",$e,!0),n[o]("load",s.onLoad,{capture:!0}))};function os(){let s=this,{params:e}=s;s.onTouchStart=es.bind(s),s.onTouchMove=ts.bind(s),s.onTouchEnd=ss.bind(s),s.onDocumentTouchStart=as.bind(s),e.cssMode&&(s.onScroll=rs.bind(s)),s.onClick=is.bind(s),s.onLoad=ns.bind(s),Re(s,"on")}function ls(){Re(this,"off")}var ds={attachEvents:os,detachEvents:ls},Be=(s,e)=>s.grid&&e.grid&&e.grid.rows>1;function cs(){let s=this,{realIndex:e,initialized:t,params:i,el:n}=s,r=i.breakpoints;if(!r||r&&Object.keys(r).length===0)return;let l=s.getBreakpoint(r,s.params.breakpointsBase,s.el);if(!l||s.currentBreakpoint===l)return;let a=(l in r?r[l]:void 0)||s.originalParams,o=Be(s,i),c=Be(s,a),u=s.params.grabCursor,h=a.grabCursor,v=i.enabled;o&&!c?(n.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),s.emitContainerClasses()):!o&&c&&(n.classList.add(`${i.containerModifierClass}grid`),(a.grid.fill&&a.grid.fill==="column"||!a.grid.fill&&i.grid.fill==="column")&&n.classList.add(`${i.containerModifierClass}grid-column`),s.emitContainerClasses()),u&&!h?s.unsetGrabCursor():!u&&h&&s.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(g=>{if(a[g]===void 0)return;let b=i[g]&&i[g].enabled,w=a[g]&&a[g].enabled;b&&!w&&s[g].disable(),!b&&w&&s[g].enable()});let m=a.direction&&a.direction!==i.direction,f=i.loop&&(a.slidesPerView!==i.slidesPerView||m),S=i.loop;m&&t&&s.changeDirection(),_(s.params,a);let d=s.params.enabled,p=s.params.loop;Object.assign(s,{allowTouchMove:s.params.allowTouchMove,allowSlideNext:s.params.allowSlideNext,allowSlidePrev:s.params.allowSlidePrev}),v&&!d?s.disable():!v&&d&&s.enable(),s.currentBreakpoint=l,s.emit("_beforeBreakpoint",a),t&&(f?(s.loopDestroy(),s.loopCreate(e),s.updateSlides()):!S&&p?(s.loopCreate(e),s.updateSlides()):S&&!p&&s.loopDestroy()),s.emit("breakpoint",a)}function ps(s,e,t){if(e===void 0&&(e="window"),!s||e==="container"&&!t)return;let i=!1,n=O(),r=e==="window"?n.innerHeight:t.clientHeight,l=Object.keys(s).map(a=>{if(typeof a=="string"&&a.indexOf("@")===0){let o=parseFloat(a.substr(1));return{value:r*o,point:a}}return{value:a,point:a}});l.sort((a,o)=>parseInt(a.value,10)-parseInt(o.value,10));for(let a=0;a{typeof i=="object"?Object.keys(i).forEach(n=>{i[n]&&t.push(e+n)}):typeof i=="string"&&t.push(e+i)}),t}function fs(){let s=this,{classNames:e,params:t,rtl:i,el:n,device:r}=s,l=ms(["initialized",t.direction,{"free-mode":s.params.freeMode&&t.freeMode.enabled},{autoheight:t.autoHeight},{rtl:i},{grid:t.grid&&t.grid.rows>1},{"grid-column":t.grid&&t.grid.rows>1&&t.grid.fill==="column"},{android:r.android},{ios:r.ios},{"css-mode":t.cssMode},{centered:t.cssMode&&t.centeredSlides},{"watch-progress":t.watchSlidesProgress}],t.containerModifierClass);e.push(...l),n.classList.add(...e),s.emitContainerClasses()}function hs(){let{el:s,classNames:e}=this;s&&typeof s!="string"&&(s.classList.remove(...e),this.emitContainerClasses())}var vs={addClasses:fs,removeClasses:hs};function gs(){let s=this,{isLocked:e,params:t}=s,{slidesOffsetBefore:i}=t;if(i){let n=s.slides.length-1,r=s.slidesGrid[n]+s.slidesSizesGrid[n]+2*i;s.isLocked=s.size>r}else s.isLocked=s.snapGrid.length===1;t.allowSlideNext===!0&&(s.allowSlideNext=!s.isLocked),t.allowSlidePrev===!0&&(s.allowSlidePrev=!s.isLocked),e&&e!==s.isLocked&&(s.isEnd=!1),e!==s.isLocked&&s.emit(s.isLocked?"lock":"unlock")}var ws={checkOverflow:gs},Ne={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function bs(s,e){return function(t){t===void 0&&(t={});let i=Object.keys(t)[0],n=t[i];typeof n=="object"&&n!==null?(s[i]===!0&&(s[i]={enabled:!0}),i==="navigation"&&s[i]&&s[i].enabled&&!s[i].prevEl&&!s[i].nextEl&&(s[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&s[i]&&s[i].enabled&&!s[i].el&&(s[i].auto=!0),i in s&&"enabled"in n?(typeof s[i]!="object"||"enabled"in s[i]||(s[i].enabled=!0),s[i]||(s[i]={enabled:!1}),_(e,t)):_(e,t)):_(e,t)}}var ge={eventsEmitter:vt,update:Lt,translate:_t,transition:$t,slide:jt,loop:Ut,grabCursor:Qt,events:ds,breakpoints:us,checkOverflow:ws,classes:vs},we={},$=class s{constructor(){let e,t;for(var i=arguments.length,n=new Array(i),r=0;r1){let u=[];return l.querySelectorAll(t.el).forEach(h=>{let v=_({},t,{el:h});u.push(new s(v))}),u}let a=this;a.__swiper__=!0,a.support=Fe(),a.device=qe({userAgent:t.userAgent}),a.browser=mt(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],t.modules&&Array.isArray(t.modules)&&a.modules.push(...t.modules);let o={};a.modules.forEach(u=>{u({params:t,swiper:a,extendParams:bs(t,o),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})});let c=_({},Ne,o);return a.params=_({},c,we,t),a.originalParams=_({},a.params),a.passedParams=_({},t),a.params&&a.params.on&&Object.keys(a.params.on).forEach(u=>{a.on(u,a.params.on[u])}),a.params&&a.params.onAny&&a.onAny(a.params.onAny),Object.assign(a,{enabled:a.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>a.params.direction==="horizontal",isVertical:()=>a.params.direction==="vertical",activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:a.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:a.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),a.emit("_swiper"),a.params.init&&a.init(),a}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){let{slidesEl:t,params:i}=this,n=z(t,`.${i.slideClass}, swiper-slide`),r=R(n[0]);return R(e)-r}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter(t=>1*t.getAttribute("data-swiper-slide-index")===e)[0])}recalcSlides(){let{slidesEl:e,params:t}=this;this.slides=z(e,`.${t.slideClass}, swiper-slide`)}enable(){let e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){let e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){let i=this;e=Math.min(Math.max(e,0),1);let n=i.minTranslate(),r=(i.maxTranslate()-n)*e+n;i.translateTo(r,t===void 0?0:t),i.updateActiveIndex(),i.updateSlidesClasses()}emitContainerClasses(){let e=this;if(!e.params._emitClasses||!e.el)return;let t=e.el.className.split(" ").filter(i=>i.indexOf("swiper")===0||i.indexOf(e.params.containerModifierClass)===0);e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){let t=this;return t.destroyed?"":e.className.split(" ").filter(i=>i.indexOf("swiper-slide")===0||i.indexOf(t.params.slideClass)===0).join(" ")}emitSlidesClasses(){let e=this;if(!e.params._emitClasses||!e.el)return;let t=[];e.slides.forEach(i=>{let n=e.getSlideClasses(i);t.push({slideEl:i,classNames:n}),e.emit("_slideClass",i,n)}),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){e===void 0&&(e="current"),t===void 0&&(t=!1);let{params:i,slides:n,slidesGrid:r,slidesSizesGrid:l,size:a,activeIndex:o}=this,c=1;if(typeof i.slidesPerView=="number")return i.slidesPerView;if(i.centeredSlides){let u,h=n[o]?Math.ceil(n[o].swiperSlideSize):0;for(let v=o+1;va&&(u=!0));for(let v=o-1;v>=0;v-=1)n[v]&&!u&&(h+=n[v].swiperSlideSize,c+=1,h>a&&(u=!0))}else if(e==="current")for(let u=o+1;u=0;u-=1)r[o]-r[u]{l.complete&&re(e,l)}),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),i.freeMode&&i.freeMode.enabled&&!i.cssMode)n(),i.autoHeight&&e.updateAutoHeight();else{if((i.slidesPerView==="auto"||i.slidesPerView>1)&&e.isEnd&&!i.centeredSlides){let l=e.virtual&&i.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(l.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||n()}i.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){t===void 0&&(t=!0);let i=this,n=i.params.direction;return e||(e=n==="horizontal"?"vertical":"horizontal"),e===n||e!=="horizontal"&&e!=="vertical"||(i.el.classList.remove(`${i.params.containerModifierClass}${n}`),i.el.classList.add(`${i.params.containerModifierClass}${e}`),i.emitContainerClasses(),i.params.direction=e,i.slides.forEach(r=>{e==="vertical"?r.style.width="":r.style.height=""}),i.emit("changeDirection"),t&&i.update()),i}changeLanguageDirection(e){let t=this;t.rtl&&e==="rtl"||!t.rtl&&e==="ltr"||(t.rtl=e==="rtl",t.rtlTranslate=t.params.direction==="horizontal"&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){let t=this;if(t.mounted)return!0;let i=e||t.params.el;if(typeof i=="string"&&(i=document.querySelector(i)),!i)return!1;i.swiper=t,i.parentNode&&i.parentNode.host&&i.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);let n=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`,r=i&&i.shadowRoot&&i.shadowRoot.querySelector?i.shadowRoot.querySelector(n()):z(i,n())[0];return!r&&t.params.createElements&&(r=V("div",t.params.wrapperClass),i.append(r),z(i,`.${t.params.slideClass}`).forEach(l=>{r.append(l)})),Object.assign(t,{el:i,wrapperEl:r,slidesEl:t.isElement&&!i.parentNode.host.slideSlots?i.parentNode.host:r,hostEl:t.isElement?i.parentNode.host:i,mounted:!0,rtl:i.dir.toLowerCase()==="rtl"||G(i,"direction")==="rtl",rtlTranslate:t.params.direction==="horizontal"&&(i.dir.toLowerCase()==="rtl"||G(i,"direction")==="rtl"),wrongRTL:G(r,"display")==="-webkit-box"}),!0}init(e){let t=this;if(t.initialized||t.mount(e)===!1)return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();let i=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&i.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),i.forEach(n=>{n.complete?re(t,n):n.addEventListener("load",r=>{re(t,r.target)})}),be(t),t.initialized=!0,be(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){e===void 0&&(e=!0),t===void 0&&(t=!0);let i=this,{params:n,el:r,wrapperEl:l,slides:a}=i;return i.params===void 0||i.destroyed||(i.emit("beforeDestroy"),i.initialized=!1,i.detachEvents(),n.loop&&i.loopDestroy(),t&&(i.removeClasses(),r&&typeof r!="string"&&r.removeAttribute("style"),l&&l.removeAttribute("style"),a&&a.length&&a.forEach(o=>{o.classList.remove(n.slideVisibleClass,n.slideFullyVisibleClass,n.slideActiveClass,n.slideNextClass,n.slidePrevClass),o.removeAttribute("style"),o.removeAttribute("data-swiper-slide-index")})),i.emit("destroy"),Object.keys(i.eventsListeners).forEach(o=>{i.off(o)}),e!==!1&&(i.el&&typeof i.el!="string"&&(i.el.swiper=null),Ie(i)),i.destroyed=!0),null}static extendDefaults(e){_(we,e)}static get extendedDefaults(){return we}static get defaults(){return Ne}static installModule(e){s.prototype.__modules__||(s.prototype.__modules__=[]);let t=s.prototype.__modules__;typeof e=="function"&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach(t=>s.installModule(t)),s):(s.installModule(e),s)}};Object.keys(ge).forEach(s=>{Object.keys(ge[s]).forEach(e=>{$.prototype[e]=ge[s][e]})}),$.use([ft,ht]);function ne(s,e,t,i){return s.params.createElements&&Object.keys(i).forEach(n=>{if(!t[n]&&t.auto===!0){let r=z(s.el,`.${i[n]}`)[0];r||(r=V("div",i[n]),r.className=i[n],s.el.append(r)),t[n]=r,e[n]=r}}),t}function Se(s){let{swiper:e,extendParams:t,on:i,emit:n}=s;function r(m){let f;return m&&typeof m=="string"&&e.isElement&&(f=e.el.querySelector(m),f)?f:(m&&(typeof m=="string"&&(f=[...document.querySelectorAll(m)]),e.params.uniqueNavElements&&typeof m=="string"&&f&&f.length>1&&e.el.querySelectorAll(m).length===1?f=e.el.querySelector(m):f&&f.length===1&&(f=f[0])),m&&!f?m:f)}function l(m,f){let S=e.params.navigation;(m=k(m)).forEach(d=>{d&&(d.classList[f?"add":"remove"](...S.disabledClass.split(" ")),d.tagName==="BUTTON"&&(d.disabled=f),e.params.watchOverflow&&e.enabled&&d.classList[e.isLocked?"add":"remove"](S.lockClass))})}function a(){let{nextEl:m,prevEl:f}=e.navigation;if(e.params.loop)return l(f,!1),void l(m,!1);l(f,e.isBeginning&&!e.params.rewind),l(m,e.isEnd&&!e.params.rewind)}function o(m){m.preventDefault(),(!e.isBeginning||e.params.loop||e.params.rewind)&&(e.slidePrev(),n("navigationPrev"))}function c(m){m.preventDefault(),(!e.isEnd||e.params.loop||e.params.rewind)&&(e.slideNext(),n("navigationNext"))}function u(){let m=e.params.navigation;if(e.params.navigation=ne(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!m.nextEl&&!m.prevEl)return;let f=r(m.nextEl),S=r(m.prevEl);Object.assign(e.navigation,{nextEl:f,prevEl:S}),f=k(f),S=k(S);let d=(p,g)=>{p&&p.addEventListener("click",g==="next"?c:o),!e.enabled&&p&&p.classList.add(...m.lockClass.split(" "))};f.forEach(p=>d(p,"next")),S.forEach(p=>d(p,"prev"))}function h(){let{nextEl:m,prevEl:f}=e.navigation;m=k(m),f=k(f);let S=(d,p)=>{d.removeEventListener("click",p==="next"?c:o),d.classList.remove(...e.params.navigation.disabledClass.split(" "))};m.forEach(d=>S(d,"next")),f.forEach(d=>S(d,"prev"))}t({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,prevEl:null},i("init",()=>{e.params.navigation.enabled===!1?v():(u(),a())}),i("toEdge fromEdge lock unlock",()=>{a()}),i("destroy",()=>{h()}),i("enable disable",()=>{let{nextEl:m,prevEl:f}=e.navigation;m=k(m),f=k(f),e.enabled?a():[...m,...f].filter(S=>!!S).forEach(S=>S.classList.add(e.params.navigation.lockClass))}),i("click",(m,f)=>{let{nextEl:S,prevEl:d}=e.navigation;S=k(S),d=k(d);let p=f.target,g=d.includes(p)||S.includes(p);if(e.isElement&&!g){let b=f.path||f.composedPath&&f.composedPath();b&&(g=b.find(w=>S.includes(w)||d.includes(w)))}if(e.params.navigation.hideOnClick&&!g){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===p||e.pagination.el.contains(p)))return;let b;S.length?b=S[0].classList.contains(e.params.navigation.hiddenClass):d.length&&(b=d[0].classList.contains(e.params.navigation.hiddenClass)),n(b===!0?"navigationShow":"navigationHide"),[...S,...d].filter(w=>!!w).forEach(w=>w.classList.toggle(e.params.navigation.hiddenClass))}});let v=()=>{e.el.classList.add(...e.params.navigation.navigationDisabledClass.split(" ")),h()};Object.assign(e.navigation,{enable:()=>{e.el.classList.remove(...e.params.navigation.navigationDisabledClass.split(" ")),u(),a()},disable:v,update:a,init:u,destroy:h})}function H(s){return s===void 0&&(s=""),`.${s.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function Te(s){let{swiper:e,extendParams:t,on:i,emit:n}=s,r="swiper-pagination",l;t({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:d=>d,formatFractionTotal:d=>d,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),e.pagination={el:null,bullets:[]};let a=0;function o(){return!e.params.pagination.el||!e.pagination.el||Array.isArray(e.pagination.el)&&e.pagination.el.length===0}function c(d,p){let{bulletActiveClass:g}=e.params.pagination;d&&(d=d[(p==="prev"?"previous":"next")+"ElementSibling"])&&(d.classList.add(`${g}-${p}`),(d=d[(p==="prev"?"previous":"next")+"ElementSibling"])&&d.classList.add(`${g}-${p}-${p}`))}function u(d){let p=d.target.closest(H(e.params.pagination.bulletClass));if(!p)return;d.preventDefault();let g=R(p)*e.params.slidesPerGroup;if(e.params.loop){if(e.realIndex===g)return;e.slideToLoop(g)}else e.slideTo(g)}function h(){let d=e.rtl,p=e.params.pagination;if(o())return;let g,b,w=e.pagination.el;w=k(w);let C=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,A=e.params.loop?Math.ceil(C/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(b=e.previousRealIndex||0,g=e.params.slidesPerGroup>1?Math.floor(e.realIndex/e.params.slidesPerGroup):e.realIndex):e.snapIndex!==void 0?(g=e.snapIndex,b=e.previousSnapIndex):(b=e.previousIndex||0,g=e.activeIndex||0),p.type==="bullets"&&e.pagination.bullets&&e.pagination.bullets.length>0){let L=e.pagination.bullets,M,P,x;if(p.dynamicBullets&&(l=K(L[0],e.isHorizontal()?"width":"height",!0),w.forEach(y=>{y.style[e.isHorizontal()?"width":"height"]=l*(p.dynamicMainBullets+4)+"px"}),p.dynamicMainBullets>1&&b!==void 0&&(a+=g-(b||0),a>p.dynamicMainBullets-1?a=p.dynamicMainBullets-1:a<0&&(a=0)),M=Math.max(g-a,0),P=M+(Math.min(L.length,p.dynamicMainBullets)-1),x=(P+M)/2),L.forEach(y=>{let T=[...["","-next","-next-next","-prev","-prev-prev","-main"].map(E=>`${p.bulletActiveClass}${E}`)].map(E=>typeof E=="string"&&E.includes(" ")?E.split(" "):E).flat();y.classList.remove(...T)}),w.length>1)L.forEach(y=>{let T=R(y);T===g?y.classList.add(...p.bulletActiveClass.split(" ")):e.isElement&&y.setAttribute("part","bullet"),p.dynamicBullets&&(T>=M&&T<=P&&y.classList.add(...`${p.bulletActiveClass}-main`.split(" ")),T===M&&c(y,"prev"),T===P&&c(y,"next"))});else{let y=L[g];if(y&&y.classList.add(...p.bulletActiveClass.split(" ")),e.isElement&&L.forEach((T,E)=>{T.setAttribute("part",E===g?"bullet-active":"bullet")}),p.dynamicBullets){let T=L[M],E=L[P];for(let I=M;I<=P;I+=1)L[I]&&L[I].classList.add(...`${p.bulletActiveClass}-main`.split(" "));c(T,"prev"),c(E,"next")}}if(p.dynamicBullets){let y=Math.min(L.length,p.dynamicMainBullets+4),T=(l*y-l)/2-x*l,E=d?"right":"left";L.forEach(I=>{I.style[e.isHorizontal()?E:"top"]=`${T}px`})}}w.forEach((L,M)=>{if(p.type==="fraction"&&(L.querySelectorAll(H(p.currentClass)).forEach(P=>{P.textContent=p.formatFractionCurrent(g+1)}),L.querySelectorAll(H(p.totalClass)).forEach(P=>{P.textContent=p.formatFractionTotal(A)})),p.type==="progressbar"){let P;P=p.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";let x=(g+1)/A,y=1,T=1;P==="horizontal"?y=x:T=x,L.querySelectorAll(H(p.progressbarFillClass)).forEach(E=>{E.style.transform=`translate3d(0,0,0) scaleX(${y}) scaleY(${T})`,E.style.transitionDuration=`${e.params.speed}ms`})}p.type==="custom"&&p.renderCustom?(L.innerHTML=p.renderCustom(e,g+1,A),M===0&&n("paginationRender",L)):(M===0&&n("paginationRender",L),n("paginationUpdate",L)),e.params.watchOverflow&&e.enabled&&L.classList[e.isLocked?"add":"remove"](p.lockClass)})}function v(){let d=e.params.pagination;if(o())return;let p=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.grid&&e.params.grid.rows>1?e.slides.length/Math.ceil(e.params.grid.rows):e.slides.length,g=e.pagination.el;g=k(g);let b="";if(d.type==="bullets"){let w=e.params.loop?Math.ceil(p/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&w>p&&(w=p);for(let C=0;C`}d.type==="fraction"&&(b=d.renderFraction?d.renderFraction.call(e,d.currentClass,d.totalClass):` / `),d.type==="progressbar"&&(b=d.renderProgressbar?d.renderProgressbar.call(e,d.progressbarFillClass):``),e.pagination.bullets=[],g.forEach(w=>{d.type!=="custom"&&(w.innerHTML=b||""),d.type==="bullets"&&e.pagination.bullets.push(...w.querySelectorAll(H(d.bulletClass)))}),d.type!=="custom"&&n("paginationRender",g[0])}function m(){e.params.pagination=ne(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});let d=e.params.pagination;if(!d.el)return;let p;typeof d.el=="string"&&e.isElement&&(p=e.el.querySelector(d.el)),p||typeof d.el!="string"||(p=[...document.querySelectorAll(d.el)]),p||(p=d.el),p&&p.length!==0&&(e.params.uniqueNavElements&&typeof d.el=="string"&&Array.isArray(p)&&p.length>1&&(p=[...e.el.querySelectorAll(d.el)],p.length>1&&(p=p.filter(g=>ie(g,".swiper")[0]===e.el)[0])),Array.isArray(p)&&p.length===1&&(p=p[0]),Object.assign(e.pagination,{el:p}),p=k(p),p.forEach(g=>{d.type==="bullets"&&d.clickable&&g.classList.add(...(d.clickableClass||"").split(" ")),g.classList.add(d.modifierClass+d.type),g.classList.add(e.isHorizontal()?d.horizontalClass:d.verticalClass),d.type==="bullets"&&d.dynamicBullets&&(g.classList.add(`${d.modifierClass}${d.type}-dynamic`),a=0,d.dynamicMainBullets<1&&(d.dynamicMainBullets=1)),d.type==="progressbar"&&d.progressbarOpposite&&g.classList.add(d.progressbarOppositeClass),d.clickable&&g.addEventListener("click",u),e.enabled||g.classList.add(d.lockClass)}))}function f(){let d=e.params.pagination;if(o())return;let p=e.pagination.el;p&&(p=k(p),p.forEach(g=>{g.classList.remove(d.hiddenClass),g.classList.remove(d.modifierClass+d.type),g.classList.remove(e.isHorizontal()?d.horizontalClass:d.verticalClass),d.clickable&&(g.classList.remove(...(d.clickableClass||"").split(" ")),g.removeEventListener("click",u))})),e.pagination.bullets&&e.pagination.bullets.forEach(g=>g.classList.remove(...d.bulletActiveClass.split(" ")))}i("changeDirection",()=>{if(!e.pagination||!e.pagination.el)return;let d=e.params.pagination,{el:p}=e.pagination;p=k(p),p.forEach(g=>{g.classList.remove(d.horizontalClass,d.verticalClass),g.classList.add(e.isHorizontal()?d.horizontalClass:d.verticalClass)})}),i("init",()=>{e.params.pagination.enabled===!1?S():(m(),v(),h())}),i("activeIndexChange",()=>{e.snapIndex===void 0&&h()}),i("snapIndexChange",()=>{h()}),i("snapGridLengthChange",()=>{v(),h()}),i("destroy",()=>{f()}),i("enable disable",()=>{let{el:d}=e.pagination;d&&(d=k(d),d.forEach(p=>p.classList[e.enabled?"remove":"add"](e.params.pagination.lockClass)))}),i("lock unlock",()=>{h()}),i("click",(d,p)=>{let g=p.target,b=k(e.pagination.el);if(e.params.pagination.el&&e.params.pagination.hideOnClick&&b&&b.length>0&&!g.classList.contains(e.params.pagination.bulletClass)){if(e.navigation&&(e.navigation.nextEl&&g===e.navigation.nextEl||e.navigation.prevEl&&g===e.navigation.prevEl))return;let w=b[0].classList.contains(e.params.pagination.hiddenClass);n(w===!0?"paginationShow":"paginationHide"),b.forEach(C=>C.classList.toggle(e.params.pagination.hiddenClass))}});let S=()=>{e.el.classList.add(e.params.pagination.paginationDisabledClass);let{el:d}=e.pagination;d&&(d=k(d),d.forEach(p=>p.classList.add(e.params.pagination.paginationDisabledClass))),f()};Object.assign(e.pagination,{enable:()=>{e.el.classList.remove(e.params.pagination.paginationDisabledClass);let{el:d}=e.pagination;d&&(d=k(d),d.forEach(p=>p.classList.remove(e.params.pagination.paginationDisabledClass))),m(),v(),h()},disable:S,render:v,update:h,init:m,destroy:f})}var He=()=>{new $(".swiper--juri",{modules:[Se,Te],width:260,loop:!0,speed:500,spaceBetween:40,navigation:{nextEl:".swiper-button-next--juri",prevEl:".swiper-button-prev--juri"},breakpoints:{768:{width:560,slidesPerView:2},1366:{width:1160,slidesPerView:4,allowTouchMove:!1}}})},je=()=>{new $(".swiper--reviews",{modules:[Se,Te],width:240,speed:800,spaceBetween:40,navigation:{nextEl:".swiper-button-next--reviews",prevEl:".swiper-button-prev--reviews"},breakpoints:{768:{width:500,slidesPerView:1},1366:{width:560,slidesPerView:1,allowTouchMove:!1}}})};var We={Center:{One:{title:"\u041A\u0430\u043A \u0441\u0442\u0430\u0442\u044C \u0447\u043B\u0435\u043D\u043E\u043C \u0444\u0438\u0442\u043D\u0435\u0441\u2011\u0446\u0435\u043D\u0442\u0440\u0430?",description:"\u041F\u0440\u0438 \u043F\u0435\u0440\u0432\u043E\u043C \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0438 \u0438 \u043F\u043E\u043A\u0443\u043F\u043A\u0435 \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442\u0430, \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0430\u043D\u043A\u0435\u0442\u0443 \u0438 \u043F\u043E\u0434\u043F\u0438\u0441\u0430\u0442\u044C \u0434\u043E\u0433\u043E\u0432\u043E\u0440. \u041F\u0440\u0438 \u043F\u043E\u043A\u0443\u043F\u043A\u0435 \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442\u0430 \u043E\u043D\u043B\u0430\u0439\u043D, \u0430\u043D\u043A\u0435\u0442\u0430 \u0442\u0430\u043A\u0436\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u043E\u043D\u043B\u0430\u0439\u043D \u0438 \u0434\u043E\u0433\u043E\u0432\u043E\u0440 \u043F\u0440\u0438\u0434\u0451\u0442 \u0432\u0430\u043C \u043D\u0430 \u043F\u043E\u0447\u0442\u0443."},Two:{title:"\u0413\u0434\u0435 \u043C\u043E\u0436\u043D\u043E \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435?",description:"\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0437\u043D\u0430\u043A\u043E\u043C\u0438\u0442\u044C\u0441\u044F \u0441 \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u043D\u0430 \u0441\u0442\u043E\u0439\u043A\u0435 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438, \u043D\u0430 \u043D\u0430\u0448\u0435\u043C \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u043C \u0441\u0430\u0439\u0442\u0435. \u0422\u0430\u043A \u0436\u0435 \u0435\u0441\u0442\u044C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u043E\u0444\u043E\u0440\u043C\u0438\u0442\u044C \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443 \u043D\u0430 \u043D\u0430\u0448\u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u0438 \u0438 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0438 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u043D\u0430 \u043F\u043E\u0447\u0442\u0443 \u043A\u0430\u0436\u0434\u0443\u044E \u043D\u0435\u0434\u0435\u043B\u044E."},Three:{title:"\u0415\u0441\u0442\u044C \u043A\u0443\u043B\u0435\u0440\u044B \u0432 \u0446\u0435\u043D\u0442\u0440\u0435? \u041F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u043F\u043E\u043B\u043E\u0442\u0435\u043D\u0446\u0430?",description:"\u0412 \u043D\u0430\u0448\u0435\u043C \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u043C \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0435 \u0435\u0441\u0442\u044C \u043A\u0443\u043B\u0435\u0440\u044B \u0441 \u0432\u043E\u0434\u043E\u0439 \u0434\u043B\u044F \u0443\u0434\u043E\u0431\u0441\u0442\u0432\u0430 \u043F\u043E\u0441\u0435\u0442\u0438\u0442\u0435\u043B\u0435\u0439. \u0427\u0442\u043E \u043A\u0430\u0441\u0430\u0435\u0442\u0441\u044F \u043F\u043E\u043B\u043E\u0442\u0435\u043D\u0435\u0446, \u0442\u043E \u0432 \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0435 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442 \u0438\u0445 \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E, \u0432 \u0442\u043E \u0432\u0440\u0435\u043C\u044F \u043A\u0430\u043A \u0434\u0440\u0443\u0433\u0438\u0435 \u043C\u043E\u0433\u0443\u0442 \u0432\u0437\u0438\u043C\u0430\u0442\u044C \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u0443\u044E \u043F\u043B\u0430\u0442\u0443 \u0438\u043B\u0438 \u0442\u0440\u0435\u0431\u043E\u0432\u0430\u0442\u044C, \u0447\u0442\u043E\u0431\u044B \u0432\u044B \u043F\u0440\u0438\u043D\u0435\u0441\u043B\u0438 \u0441\u0432\u043E\u0435 \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0435 \u043F\u043E\u043B\u043E\u0442\u0435\u043D\u0446\u0435."},Four:{title:"\u0421\u043A\u043E\u043B\u044C\u043A\u043E \u0442\u0440\u0435\u043D\u0435\u0440\u043E\u0432 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0432 \u043A\u043B\u0443\u0431\u0435 \u0438 \u043A\u0430\u043A\u043E\u0432\u0430 \u0438\u0445 \u043A\u0432\u0430\u043B\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F",description:"\u0412 \u043D\u0430\u0448\u0435\u043C \u043A\u043B\u0443\u0431\u0435 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 8 \u0442\u0440\u0435\u043D\u0435\u0440\u043E\u0432 \u0441 \u043E\u0431\u0448\u0438\u0440\u043D\u044B\u043C\u0438 \u043A\u0432\u0430\u043B\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F\u043C\u0438 \u0438 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F\u043C\u0438. \u041F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u0443\u044E \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043C\u043E\u0436\u043D\u043E \u043D\u0430 \u0441\u0430\u0439\u0442\u0435."}},Subscription:{One:{title:"\u0417\u0430\u043D\u044F\u0442\u0438\u044F \u0441 \u0442\u0440\u0435\u043D\u0435\u0440\u043E\u043C \u0432\u0445\u043E\u0434\u044F\u0442 \u0432 \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442?",description:"\u041F\u0440\u0438 \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0438 \u0442\u0440\u0435\u043D\u0430\u0436\u0435\u0440\u043D\u043E\u0433\u043E \u0437\u0430\u043B\u0430 \u0432\u0430\u043C \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u043E\u043F\u043B\u0430\u0442\u0438\u0442\u044C \u0437\u0430\u043D\u044F\u0442\u0438\u044F \u0441 \u0442\u0440\u0435\u043D\u0435\u0440\u043E\u043C \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E. \u0412 \u0437\u0430\u043B\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0435\u0436\u0443\u0440\u043D\u044B\u0439 \u0442\u0440\u0435\u043D\u0435\u0440, \u043A\u043E\u0442\u043E\u0440\u043E\u043C\u0443 \u043C\u043E\u0436\u043D\u043E \u0437\u0430\u0434\u0430\u0442\u044C \u0432\u043E\u043F\u0440\u043E\u0441, \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043D\u0435\u0431\u043E\u043B\u044C\u0448\u0443\u044E \u043A\u043E\u043D\u0441\u0443\u043B\u044C\u0442\u0430\u0446\u0438\u044E \u043F\u043E \u0442\u0440\u0435\u043D\u0430\u0436\u0435\u0440\u0443 \u0438\u043B\u0438 \u0442\u0435\u0445\u043D\u0438\u043A\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u0443\u043F\u0440\u0430\u0436\u043D\u0435\u043D\u0438\u044F."},Two:{title:"\u041C\u043E\u0436\u043D\u043E \u043B\u0438 \u0437\u0430\u043C\u043E\u0440\u043E\u0437\u0438\u0442\u044C \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442?",description:"\u041B\u0443\u0447\u0448\u0438\u0439 \u0441\u043F\u043E\u0441\u043E\u0431 \u0443\u0437\u043D\u0430\u0442\u044C \u043E \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438 \u0438 \u0443\u0441\u043B\u043E\u0432\u0438\u044F\u0445 \u0437\u0430\u043C\u043E\u0440\u043E\u0437\u043A\u0438 \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442\u0430 \u0432 \u0432\u0430\u0448\u0435\u043C \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0435 \u2014 \u044D\u0442\u043E \u043E\u0431\u0440\u0430\u0442\u0438\u0442\u044C\u0441\u044F \u043D\u0435\u043F\u043E\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043D\u043D\u043E \u0432 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044E \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0430, \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0438\u0445 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 \u0438\u043B\u0438 \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u044F \u0432\u0430\u0448\u0435\u0433\u043E \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442\u0430."},Three:{title:"\u0415\u0441\u0442\u044C \u043B\u0438 \u043B\u0438\u043C\u0438\u0442 \u043F\u043E \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F\u043C \u0442\u0440\u0435\u043D\u0430\u0436\u0435\u0440\u043D\u043E\u0433\u043E \u0437\u0430\u043B\u0430 \u0438 \u0433\u0440\u0443\u043F\u043F\u043E\u0432\u044B\u0445 \u0437\u0430\u043D\u044F\u0442\u0438\u0439?",description:"\u0410\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u043F\u043E\u0432\u044B\u0435 \u0437\u0430\u043D\u044F\u0442\u0438\u044F \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0439 \u0433\u0440\u0443\u043F\u043F\u043E\u0432\u044B\u0445 \u043A\u043B\u0430\u0441\u0441\u043E\u0432 \u0432 \u043C\u0435\u0441\u044F\u0446."},Four:{title:"\u0413\u0434\u0435 \u043C\u043E\u0436\u043D\u043E \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435?",description:"\u0427\u0442\u043E\u0431\u044B \u0443\u0437\u043D\u0430\u0442\u044C \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043E \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0430, \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u043E\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C\u0438 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0430\u043C\u0438 - \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0439 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0430, \u0447\u0435\u0440\u0435\u0437 \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435, \u043F\u043E\u0437\u0432\u043E\u043D\u0438\u0442\u044C \u043D\u0430\u043C \u0438\u043B\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u0438\u0442\u044C \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u0443\u044E \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443."}},Services:{One:{title:"\u041F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 \u043B\u0438 \u043A\u043B\u0443\u0431 \u0443\u0441\u043B\u0443\u0433\u0438 \u043F\u043E \u043A\u043E\u043D\u0441\u0443\u043B\u044C\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044E \u043F\u043E \u0432\u043E\u043F\u0440\u043E\u0441\u0430\u043C \u043F\u0438\u0442\u0430\u043D\u0438\u044F?",description:"\u0414\u0430. \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0431\u0440\u0430\u0442\u0438\u0442\u044C\u0441\u044F \u043A\u0430\u043A \u043A \u0441\u0432\u043E\u0435\u043C\u0443 \u0442\u0440\u0435\u043D\u0435\u0440\u0443, \u0442\u0430\u043A \u0438 \u043A \u043D\u0430\u0448\u0435\u043C\u0443 \u043D\u0443\u0442\u0440\u0438\u0446\u0438\u043E\u043B\u043E\u0433\u0443. \u0421\u043F\u0435\u0446\u0438\u0430\u043B\u0438\u0441\u0442 \u0443\u0442\u043E\u0447\u043D\u0438\u0442 \u0432\u0430\u0448\u0438 \u0434\u0430\u043D\u043D\u044B\u0435, \u0446\u0435\u043B\u0438 \u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0438\u0442 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0443 \u043F\u0438\u0442\u0430\u043D\u0438\u044F."},Two:{title:"\u041F\u0440\u043E\u0432\u043E\u0434\u044F\u0442\u0441\u044F \u043B\u0438 \u0432 \u043A\u043B\u0443\u0431\u0435 \u043A\u0430\u043A\u0438\u0435-\u043B\u0438\u0431\u043E \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F \u0438\u043B\u0438 \u0441\u043E\u0440\u0435\u0432\u043D\u043E\u0432\u0430\u043D\u0438\u044F?",description:"\u0414\u0430, \u0432 \u043D\u0430\u0448\u0435\u043C \u0437\u0430\u043B\u0435 \u043F\u0440\u043E\u0432\u043E\u0434\u0438\u0442\u0441\u044F - \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0435 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F \u0438 \u0441\u043E\u0440\u0435\u0432\u043D\u043E\u0432\u0430\u043D\u0438\u044F. \u0424\u0438\u0442\u043D\u0435\u0441-\u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F \u0438 \u043C\u0430\u0441\u0442\u0435\u0440-\u043A\u043B\u0430\u0441\u0441\u044B, \u0441\u043E\u0440\u0435\u0432\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u0438 \u0442\u0443\u0440\u043D\u0438\u0440\u044B, \u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F, \u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u0434\u043D\u0438 \u0438 \u0434\u043D\u0438 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0445 \u0434\u0432\u0435\u0440\u0435\u0439. \u0410\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u043E\u0435 \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u043C\u043E\u0436\u043D\u043E \u0443\u0437\u043D\u0430\u0442\u044C \u0432 \u043D\u0430\u0448\u0438\u0445 \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0441\u0435\u0442\u044F\u0445."},Three:{title:"\u041C\u043E\u0436\u043D\u043E \u043B\u0438 \u043F\u0440\u0438\u043E\u0431\u0440\u0435\u0441\u0442\u0438 \u0432 \u0446\u0435\u043D\u0442\u0440\u0435 \u0441\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u043E\u0435 \u043F\u0438\u0442\u0430\u043D\u0438\u0435?",description:"\u041C\u044B \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u043C \u0441\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u043E\u0435 \u043F\u0438\u0442\u0430\u043D\u0438\u0435 \u0432 \u043D\u0430\u0448\u0435\u043C \u043C\u0430\u0433\u0430\u0437\u0438\u043D\u0430\u0445 \u0438 \u043D\u0430 \u0440\u0435\u0441\u0435\u043F\u0448\u0435\u043D\u0435."},Four:{title:"\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0446\u0435\u043D\u0442\u0440\u0435 \u0434\u0435\u0442\u0441\u043A\u0430\u044F \u043A\u043E\u043C\u043D\u0430\u0442\u0430?",description:"\u0414\u0430, \u0432 \u043D\u0430\u0448\u0435\u043C \u0441\u043F\u043E\u0440\u0442 \u0437\u0430\u043B\u0435 \u0435\u0441\u0442\u044C \u0434\u0435\u0442\u0441\u043A\u0430\u044F \u043A\u043E\u043C\u043D\u0430\u0442\u0430. \u041F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0444\u043E\u0442\u043E\u0433\u0440\u0430\u0444\u0438\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u0432 \u043D\u0430\u0448\u0438\u0445 \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0441\u0435\u0442\u044F\u0445."}},Rules:{One:{title:"\u0415\u0441\u0442\u044C \u0432 \u0444\u0438\u0442\u043D\u0435\u0441-\u0446\u0435\u043D\u0442\u0440\u0435 \u0434\u0440\u0435\u0441\u0441-\u043A\u043E\u0434?",description:"\u0414\u043B\u044F \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043E\u043A \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0438\u043C\u0435\u0442\u044C \u043F\u0440\u0435\u0434\u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u0443\u044E \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0437\u0430\u043A\u0440\u044B\u0442\u0443\u044E \u0441\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u0443\u044E \u043E\u0431\u0443\u0432\u044C \u0438 \u043E\u0434\u0435\u0436\u0434\u0443. \u0412\u0435\u0440\u0445\u043D\u044F\u044F \u0438 \u043D\u0438\u0436\u043D\u044F\u044F \u0447\u0430\u0441\u0442\u0438 \u0442\u0435\u043B\u0430 \u0434\u043E\u043B\u0436\u043D\u044B \u0431\u044B\u0442\u044C \u0437\u0430\u043A\u0440\u044B\u0442\u044B (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0444\u0443\u0442\u0431\u043E\u043B\u043A\u0438, \u043C\u0430\u0439\u043A\u0438, \u0441\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u044B\u0435 \u0431\u0440\u044E\u043A\u0438, \u0448\u043E\u0440\u0442\u044B, \u043A\u0440\u043E\u0441\u0441\u043E\u0432\u043A\u0438). \u0412 \u0446\u0435\u043B\u044F\u0445 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438, \u0437\u0430\u043F\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044F \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0431\u043E\u0441\u0438\u043A\u043E\u043C, \u0432 \u043F\u043B\u044F\u0436\u043D\u044B\u0445 \u0438\u043B\u0438 \u0434\u043E\u043C\u0430\u0448\u043D\u0438\u0445 \u0442\u0430\u043F\u043E\u0447\u043A\u0430\u0445 \u0438 \u0442. \u043F., \u0438\u0441\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0441\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0435 \u043A\u043B\u0430\u0441\u0441\u044B (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0439\u043E\u0433\u0430, \u043F\u0438\u043B\u0430\u0442\u0435\u0441)."},Two:{title:"\u041C\u043E\u0436\u043D\u043E \u043B\u0438 \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442\u044C \u0441 \u0441\u043E\u0431\u043E\u0439 \u0434\u0435\u0442\u0435\u0439 \u043D\u0430 \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043A\u0438?",description:"\u0412 \u043D\u0430\u0448\u0435\u043C \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0435 \u043E\u0431\u0443\u0441\u0442\u0440\u043E\u0435\u043D\u0430 \u0434\u0435\u0442\u0441\u043A\u0430\u044F \u043A\u043E\u043C\u043D\u0430\u0442\u0430, \u0434\u043B\u044F \u043A\u043E\u043C\u0444\u043E\u0440\u0442\u043D\u043E\u0433\u043E \u043F\u0440\u0435\u0431\u044B\u0432\u0430\u043D\u0438\u044F \u0440\u0435\u0431\u0435\u043D\u043A\u0430. \u0422\u0430\u043A \u0436\u0435 \u0432 \u043D\u0430\u0448\u0438\u0445 \u0441\u043E\u0446 \u0441\u0435\u0442\u044F\u0445 \u0432\u044B\u0432\u0435\u0448\u0435\u043D\u044B \u0447\u0430\u0441\u044B \u0440\u0430\u0431\u043E\u0442\u044B \u0430\u043D\u0438\u043C\u0430\u0442\u043E\u0440\u043E\u0432."},Three:{title:"\u041A\u0430\u043A\u0438\u0435 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F \u0446\u0435\u043D\u0442\u0440\u0430?",description:"\u0415\u0441\u0442\u044C \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u043F\u0440\u0430\u0432\u0438\u043B \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0441\u043E\u0431\u043B\u044E\u0441\u0442\u0438 \u043F\u0435\u0440\u0435\u0434 \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043A\u043E\u0439. \u0423 \u0432\u0430\u0441 \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0441 \u0441\u043E\u0431\u043E\u0439 \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043E\u0447\u043D\u0430\u044F \u0444\u043E\u0440\u043C\u0430. \u041C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0430\u044F \u0441\u043F\u0440\u0430\u0432\u043A\u0430 \u043E \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0438\u0439 \u043F\u0440\u043E\u0442\u0438\u0432\u043E\u043F\u043E\u043A\u0430\u0437\u0430\u043D\u0438\u0439. \u0417\u0430\u043F\u0440\u0435\u0449\u0435\u043D\u043E \u043F\u0440\u0438\u043D\u043E\u0441\u0438\u0442\u044C \u043F\u0440\u043E\u0434\u0443\u043A\u0442\u044B \u043F\u0438\u0442\u0430\u043D\u0438\u044F \u0441 \u0441\u043E\u0431\u043E\u0439. \u0414\u043B\u044F \u0434\u0435\u0442\u0435\u0439 \u0440\u0430\u0437\u043D\u044B\u0445 \u0432\u043E\u0437\u0440\u0430\u0441\u0442\u043E\u0432 \u0435\u0441\u0442\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u044F \u043D\u0430 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0441\u0435\u043A\u0446\u0438\u0438 \u0437\u0430\u043B\u0430."},Four:{title:"\u041D\u0443\u0436\u043D\u0430 \u043B\u0438 \u043C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0430\u044F \u0441\u043F\u0440\u0430\u0432\u043A\u0430 \u0434\u043B\u044F \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F \u0437\u0430\u043B\u043E\u0432 \u0438 \u0431\u0430\u0441\u0441\u0435\u0439\u043D\u0430?",description:"\u0414\u043B\u044F \u043E\u0431\u0449\u0435\u0433\u043E \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F \u0442\u0440\u0435\u043D\u0430\u0436\u0435\u0440\u043D\u043E\u0433\u043E \u0437\u0430\u043B\u0430 \u0441\u043F\u0440\u0430\u0432\u043A\u0430 \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F. \u041E\u0434\u043D\u0430\u043A\u043E, \u0435\u0441\u043B\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u043C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0438\u0435 \u0443\u0441\u043B\u043E\u0432\u0438\u044F \u0438\u043B\u0438 \u0437\u0430\u0431\u043E\u043B\u0435\u0432\u0430\u043D\u0438\u044F, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0433\u0443\u0442 \u043F\u043E\u0432\u043B\u0438\u044F\u0442\u044C \u043D\u0430 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u044C \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043E\u043A, \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u043E\u0432\u0430\u043D\u043E \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0441\u043F\u0440\u0430\u0432\u043A\u0443 \u043E\u0442 \u0432\u0440\u0430\u0447\u0430. \u0414\u043B\u044F \u0431\u0430\u0441\u0441\u0435\u0439\u043D\u0430 \u0441\u043F\u0440\u0430\u0432\u043A\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u043C \u043F\u043E\u0440\u044F\u0434\u043A\u0435."}}},J={center:"faq__button--center",subscription:"faq__button--subscription",services:"faq__button--services",rules:"faq__button--rules"};var Xe=document.querySelectorAll(".faq__info-item"),Ye=document.querySelectorAll(".faq__button"),Ss=()=>{Xe.forEach(s=>{s.querySelector("button").addEventListener("click",()=>{s.classList.contains("faq__info-item--active")?s.classList.remove("faq__info-item--active"):s.classList.add("faq__info-item--active")})})},Ts=()=>{Ye.forEach(s=>{s.addEventListener("click",()=>{Ye.forEach(n=>{n.classList.remove("faq__button--active")}),s.classList.add("faq__button--active");let e,t=0;switch(s.classList[1]){case J.center:e="Center";break;case J.subscription:e="Subscription";break;case J.services:e="Services";break;case J.rules:e="Rules";break;default:}let i=Object.values(We[e]);Xe.forEach(n=>{n.querySelector("h3").innerHTML=i[t].title,n.querySelector("p").innerHTML=i[t].description,t++})})})},Ue=()=>{Ss(),Ts()};var q=document.querySelector(".form__form"),oe=q.querySelector(".form__button-submit"),j=q.querySelector(".form__input--name"),W=q.querySelector(".form__input--tel"),Ke=q.querySelector(".form__wrong-message--tel"),Je=q.querySelector(".form__wrong-message--name"),Qe=q.querySelector(".form__congratulation-message"),ys=/^\+?[0-9]{1,30}$/,xs=/^\+?[0-9]{11}$/,Es=/^[^\s][a-z а-яё]{1,30}[^\s]$/i,Cs=/^[a-z а-яё]{1,30}$/i,ae=(s,e,t)=>{s.innerHTML=e,t.classList.add("form__input--error")},Ms=()=>{Qe.innerHTML="\u0424\u043E\u0440\u043C\u0430 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0430!",oe.classList.add("form__button-submit--sent"),setTimeout(()=>{oe.classList.remove("form__button-submit--sent"),Qe.innerHTML=""},5*1e3)};q.addEventListener("submit",s=>{if(s.preventDefault(),ys.test(W.value))W.classList.remove("form__input--error");else{ae(Ke,"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0446\u0438\u0444\u0440\u044B",W);return}if(xs.test(W.value))W.classList.remove("form__input--error");else{ae(Ke,"\u041D\u043E\u043C\u0435\u0440 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 11 \u0446\u0438\u0444\u0440",W);return}if(Cs.test(j.value))j.classList.remove("form__input--error");else{ae(Je,"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0411\u0443\u043A\u0432\u044B",j);return}if(Es.test(j.value))j.classList.remove("form__input--error");else{ae(Je,"\u0423\u0431\u0435\u0440\u0438\u0442\u0435 \u043B\u0438\u0448\u043D\u0438\u0438 \u043F\u0440\u043E\u0431\u0435\u043B\u044B",j);return}oe.disabled=!0,fetch("https://echo.htmlacademy.ru/.",{method:"POST",body:new FormData(s.target)}).then(e=>{if(!e.ok)throw new Error("\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0444\u043E\u0440\u043C\u0443. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437")}).then(Ms()).finally(oe.disabled=!1)});Ce();Le();He();Ue();je(); diff --git a/docs/scripts/question-answer-content.js b/docs/scripts/question-answer-content.js new file mode 100644 index 0000000..5aa72bd --- /dev/null +++ b/docs/scripts/question-answer-content.js @@ -0,0 +1 @@ +var t={Center:{One:{title:"\u041A\u0430\u043A \u0441\u0442\u0430\u0442\u044C \u0447\u043B\u0435\u043D\u043E\u043C \u0444\u0438\u0442\u043D\u0435\u0441\u2011\u0446\u0435\u043D\u0442\u0440\u0430?",description:"\u041F\u0440\u0438 \u043F\u0435\u0440\u0432\u043E\u043C \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0438 \u0438 \u043F\u043E\u043A\u0443\u043F\u043A\u0435 \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442\u0430, \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0430\u043D\u043A\u0435\u0442\u0443 \u0438 \u043F\u043E\u0434\u043F\u0438\u0441\u0430\u0442\u044C \u0434\u043E\u0433\u043E\u0432\u043E\u0440. \u041F\u0440\u0438 \u043F\u043E\u043A\u0443\u043F\u043A\u0435 \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442\u0430 \u043E\u043D\u043B\u0430\u0439\u043D, \u0430\u043D\u043A\u0435\u0442\u0430 \u0442\u0430\u043A\u0436\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u043E\u043D\u043B\u0430\u0439\u043D \u0438 \u0434\u043E\u0433\u043E\u0432\u043E\u0440 \u043F\u0440\u0438\u0434\u0451\u0442 \u0432\u0430\u043C \u043D\u0430 \u043F\u043E\u0447\u0442\u0443."},Two:{title:"\u0413\u0434\u0435 \u043C\u043E\u0436\u043D\u043E \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435?",description:"\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0437\u043D\u0430\u043A\u043E\u043C\u0438\u0442\u044C\u0441\u044F \u0441 \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u043D\u0430 \u0441\u0442\u043E\u0439\u043A\u0435 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438, \u043D\u0430 \u043D\u0430\u0448\u0435\u043C \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u043C \u0441\u0430\u0439\u0442\u0435. \u0422\u0430\u043A \u0436\u0435 \u0435\u0441\u0442\u044C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u043E\u0444\u043E\u0440\u043C\u0438\u0442\u044C \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443 \u043D\u0430 \u043D\u0430\u0448\u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u0438 \u0438 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0438 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u043D\u0430 \u043F\u043E\u0447\u0442\u0443 \u043A\u0430\u0436\u0434\u0443\u044E \u043D\u0435\u0434\u0435\u043B\u044E."},Three:{title:"\u0415\u0441\u0442\u044C \u043A\u0443\u043B\u0435\u0440\u044B \u0432 \u0446\u0435\u043D\u0442\u0440\u0435? \u041F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u043F\u043E\u043B\u043E\u0442\u0435\u043D\u0446\u0430?",description:"\u0412 \u043D\u0430\u0448\u0435\u043C \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u043C \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0435 \u0435\u0441\u0442\u044C \u043A\u0443\u043B\u0435\u0440\u044B \u0441 \u0432\u043E\u0434\u043E\u0439 \u0434\u043B\u044F \u0443\u0434\u043E\u0431\u0441\u0442\u0432\u0430 \u043F\u043E\u0441\u0435\u0442\u0438\u0442\u0435\u043B\u0435\u0439. \u0427\u0442\u043E \u043A\u0430\u0441\u0430\u0435\u0442\u0441\u044F \u043F\u043E\u043B\u043E\u0442\u0435\u043D\u0435\u0446, \u0442\u043E \u0432 \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0435 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442 \u0438\u0445 \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E, \u0432 \u0442\u043E \u0432\u0440\u0435\u043C\u044F \u043A\u0430\u043A \u0434\u0440\u0443\u0433\u0438\u0435 \u043C\u043E\u0433\u0443\u0442 \u0432\u0437\u0438\u043C\u0430\u0442\u044C \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u0443\u044E \u043F\u043B\u0430\u0442\u0443 \u0438\u043B\u0438 \u0442\u0440\u0435\u0431\u043E\u0432\u0430\u0442\u044C, \u0447\u0442\u043E\u0431\u044B \u0432\u044B \u043F\u0440\u0438\u043D\u0435\u0441\u043B\u0438 \u0441\u0432\u043E\u0435 \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0435 \u043F\u043E\u043B\u043E\u0442\u0435\u043D\u0446\u0435."},Four:{title:"\u0421\u043A\u043E\u043B\u044C\u043A\u043E \u0442\u0440\u0435\u043D\u0435\u0440\u043E\u0432 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0432 \u043A\u043B\u0443\u0431\u0435 \u0438 \u043A\u0430\u043A\u043E\u0432\u0430 \u0438\u0445 \u043A\u0432\u0430\u043B\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F",description:"\u0412 \u043D\u0430\u0448\u0435\u043C \u043A\u043B\u0443\u0431\u0435 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 8 \u0442\u0440\u0435\u043D\u0435\u0440\u043E\u0432 \u0441 \u043E\u0431\u0448\u0438\u0440\u043D\u044B\u043C\u0438 \u043A\u0432\u0430\u043B\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F\u043C\u0438 \u0438 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F\u043C\u0438. \u041F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u0443\u044E \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043C\u043E\u0436\u043D\u043E \u043D\u0430 \u0441\u0430\u0439\u0442\u0435."}},Subscription:{One:{title:"\u0417\u0430\u043D\u044F\u0442\u0438\u044F \u0441 \u0442\u0440\u0435\u043D\u0435\u0440\u043E\u043C \u0432\u0445\u043E\u0434\u044F\u0442 \u0432 \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442?",description:"\u041F\u0440\u0438 \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0438 \u0442\u0440\u0435\u043D\u0430\u0436\u0435\u0440\u043D\u043E\u0433\u043E \u0437\u0430\u043B\u0430 \u0432\u0430\u043C \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u043E\u043F\u043B\u0430\u0442\u0438\u0442\u044C \u0437\u0430\u043D\u044F\u0442\u0438\u044F \u0441 \u0442\u0440\u0435\u043D\u0435\u0440\u043E\u043C \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E. \u0412 \u0437\u0430\u043B\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043F\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0435\u0436\u0443\u0440\u043D\u044B\u0439 \u0442\u0440\u0435\u043D\u0435\u0440, \u043A\u043E\u0442\u043E\u0440\u043E\u043C\u0443 \u043C\u043E\u0436\u043D\u043E \u0437\u0430\u0434\u0430\u0442\u044C \u0432\u043E\u043F\u0440\u043E\u0441, \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043D\u0435\u0431\u043E\u043B\u044C\u0448\u0443\u044E \u043A\u043E\u043D\u0441\u0443\u043B\u044C\u0442\u0430\u0446\u0438\u044E \u043F\u043E \u0442\u0440\u0435\u043D\u0430\u0436\u0435\u0440\u0443 \u0438\u043B\u0438 \u0442\u0435\u0445\u043D\u0438\u043A\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u0443\u043F\u0440\u0430\u0436\u043D\u0435\u043D\u0438\u044F."},Two:{title:"\u041C\u043E\u0436\u043D\u043E \u043B\u0438 \u0437\u0430\u043C\u043E\u0440\u043E\u0437\u0438\u0442\u044C \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442?",description:"\u041B\u0443\u0447\u0448\u0438\u0439 \u0441\u043F\u043E\u0441\u043E\u0431 \u0443\u0437\u043D\u0430\u0442\u044C \u043E \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438 \u0438 \u0443\u0441\u043B\u043E\u0432\u0438\u044F\u0445 \u0437\u0430\u043C\u043E\u0440\u043E\u0437\u043A\u0438 \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442\u0430 \u0432 \u0432\u0430\u0448\u0435\u043C \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0435 \u2014 \u044D\u0442\u043E \u043E\u0431\u0440\u0430\u0442\u0438\u0442\u044C\u0441\u044F \u043D\u0435\u043F\u043E\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043D\u043D\u043E \u0432 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044E \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0430, \u043F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0438\u0445 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 \u0438\u043B\u0438 \u043F\u0440\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u0443\u0441\u043B\u043E\u0432\u0438\u044F \u0432\u0430\u0448\u0435\u0433\u043E \u0430\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442\u0430."},Three:{title:"\u0415\u0441\u0442\u044C \u043B\u0438 \u043B\u0438\u043C\u0438\u0442 \u043F\u043E \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F\u043C \u0442\u0440\u0435\u043D\u0430\u0436\u0435\u0440\u043D\u043E\u0433\u043E \u0437\u0430\u043B\u0430 \u0438 \u0433\u0440\u0443\u043F\u043F\u043E\u0432\u044B\u0445 \u0437\u0430\u043D\u044F\u0442\u0438\u0439?",description:"\u0410\u0431\u043E\u043D\u0435\u043C\u0435\u043D\u0442 \u043D\u0430 \u0433\u0440\u0443\u043F\u043F\u043E\u0432\u044B\u0435 \u0437\u0430\u043D\u044F\u0442\u0438\u044F \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u0439 \u0433\u0440\u0443\u043F\u043F\u043E\u0432\u044B\u0445 \u043A\u043B\u0430\u0441\u0441\u043E\u0432 \u0432 \u043C\u0435\u0441\u044F\u0446."},Four:{title:"\u0413\u0434\u0435 \u043C\u043E\u0436\u043D\u043E \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435?",description:"\u0427\u0442\u043E\u0431\u044B \u0443\u0437\u043D\u0430\u0442\u044C \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043E \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0430, \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u043E\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C\u0438 \u0438\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0430\u043C\u0438 - \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0439 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0430, \u0447\u0435\u0440\u0435\u0437 \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435, \u043F\u043E\u0437\u0432\u043E\u043D\u0438\u0442\u044C \u043D\u0430\u043C \u0438\u043B\u0438 \u0437\u0430\u043F\u0440\u043E\u0441\u0438\u0442\u044C \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u0443\u044E \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443."}},Services:{One:{title:"\u041F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u0442 \u043B\u0438 \u043A\u043B\u0443\u0431 \u0443\u0441\u043B\u0443\u0433\u0438 \u043F\u043E \u043A\u043E\u043D\u0441\u0443\u043B\u044C\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044E \u043F\u043E \u0432\u043E\u043F\u0440\u043E\u0441\u0430\u043C \u043F\u0438\u0442\u0430\u043D\u0438\u044F?",description:"\u0414\u0430. \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0431\u0440\u0430\u0442\u0438\u0442\u044C\u0441\u044F \u043A\u0430\u043A \u043A \u0441\u0432\u043E\u0435\u043C\u0443 \u0442\u0440\u0435\u043D\u0435\u0440\u0443, \u0442\u0430\u043A \u0438 \u043A \u043D\u0430\u0448\u0435\u043C\u0443 \u043D\u0443\u0442\u0440\u0438\u0446\u0438\u043E\u043B\u043E\u0433\u0443. \u0421\u043F\u0435\u0446\u0438\u0430\u043B\u0438\u0441\u0442 \u0443\u0442\u043E\u0447\u043D\u0438\u0442 \u0432\u0430\u0448\u0438 \u0434\u0430\u043D\u043D\u044B\u0435, \u0446\u0435\u043B\u0438 \u0438 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0438\u0442 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0443 \u043F\u0438\u0442\u0430\u043D\u0438\u044F."},Two:{title:"\u041F\u0440\u043E\u0432\u043E\u0434\u044F\u0442\u0441\u044F \u043B\u0438 \u0432 \u043A\u043B\u0443\u0431\u0435 \u043A\u0430\u043A\u0438\u0435-\u043B\u0438\u0431\u043E \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F \u0438\u043B\u0438 \u0441\u043E\u0440\u0435\u0432\u043D\u043E\u0432\u0430\u043D\u0438\u044F?",description:"\u0414\u0430, \u0432 \u043D\u0430\u0448\u0435\u043C \u0437\u0430\u043B\u0435 \u043F\u0440\u043E\u0432\u043E\u0434\u0438\u0442\u0441\u044F - \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0435 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F \u0438 \u0441\u043E\u0440\u0435\u0432\u043D\u043E\u0432\u0430\u043D\u0438\u044F. \u0424\u0438\u0442\u043D\u0435\u0441-\u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F \u0438 \u043C\u0430\u0441\u0442\u0435\u0440-\u043A\u043B\u0430\u0441\u0441\u044B, \u0441\u043E\u0440\u0435\u0432\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u0438 \u0442\u0443\u0440\u043D\u0438\u0440\u044B, \u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u044F, \u041E\u0442\u043A\u0440\u044B\u0442\u044B\u0435 \u0434\u043D\u0438 \u0438 \u0434\u043D\u0438 \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u0445 \u0434\u0432\u0435\u0440\u0435\u0439. \u0410\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u043E\u0435 \u0440\u0430\u0441\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u043C\u043E\u0436\u043D\u043E \u0443\u0437\u043D\u0430\u0442\u044C \u0432 \u043D\u0430\u0448\u0438\u0445 \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0441\u0435\u0442\u044F\u0445."},Three:{title:"\u041C\u043E\u0436\u043D\u043E \u043B\u0438 \u043F\u0440\u0438\u043E\u0431\u0440\u0435\u0441\u0442\u0438 \u0432 \u0446\u0435\u043D\u0442\u0440\u0435 \u0441\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u043E\u0435 \u043F\u0438\u0442\u0430\u043D\u0438\u0435?",description:"\u041C\u044B \u043F\u0440\u0435\u0434\u043B\u0430\u0433\u0430\u0435\u043C \u0441\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u043E\u0435 \u043F\u0438\u0442\u0430\u043D\u0438\u0435 \u0432 \u043D\u0430\u0448\u0435\u043C \u043C\u0430\u0433\u0430\u0437\u0438\u043D\u0430\u0445 \u0438 \u043D\u0430 \u0440\u0435\u0441\u0435\u043F\u0448\u0435\u043D\u0435."},Four:{title:"\u0415\u0441\u0442\u044C \u043B\u0438 \u0432 \u0446\u0435\u043D\u0442\u0440\u0435 \u0434\u0435\u0442\u0441\u043A\u0430\u044F \u043A\u043E\u043C\u043D\u0430\u0442\u0430?",description:"\u0414\u0430, \u0432 \u043D\u0430\u0448\u0435\u043C \u0441\u043F\u043E\u0440\u0442 \u0437\u0430\u043B\u0435 \u0435\u0441\u0442\u044C \u0434\u0435\u0442\u0441\u043A\u0430\u044F \u043A\u043E\u043C\u043D\u0430\u0442\u0430. \u041F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0444\u043E\u0442\u043E\u0433\u0440\u0430\u0444\u0438\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u0432 \u043D\u0430\u0448\u0438\u0445 \u0441\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0445 \u0441\u0435\u0442\u044F\u0445."}},Rules:{One:{title:"\u0415\u0441\u0442\u044C \u0432 \u0444\u0438\u0442\u043D\u0435\u0441-\u0446\u0435\u043D\u0442\u0440\u0435 \u0434\u0440\u0435\u0441\u0441-\u043A\u043E\u0434?",description:"\u0414\u043B\u044F \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043E\u043A \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0438\u043C\u0435\u0442\u044C \u043F\u0440\u0435\u0434\u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u0443\u044E \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0437\u0430\u043A\u0440\u044B\u0442\u0443\u044E \u0441\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u0443\u044E \u043E\u0431\u0443\u0432\u044C \u0438 \u043E\u0434\u0435\u0436\u0434\u0443. \u0412\u0435\u0440\u0445\u043D\u044F\u044F \u0438 \u043D\u0438\u0436\u043D\u044F\u044F \u0447\u0430\u0441\u0442\u0438 \u0442\u0435\u043B\u0430 \u0434\u043E\u043B\u0436\u043D\u044B \u0431\u044B\u0442\u044C \u0437\u0430\u043A\u0440\u044B\u0442\u044B (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0444\u0443\u0442\u0431\u043E\u043B\u043A\u0438, \u043C\u0430\u0439\u043A\u0438, \u0441\u043F\u043E\u0440\u0442\u0438\u0432\u043D\u044B\u0435 \u0431\u0440\u044E\u043A\u0438, \u0448\u043E\u0440\u0442\u044B, \u043A\u0440\u043E\u0441\u0441\u043E\u0432\u043A\u0438). \u0412 \u0446\u0435\u043B\u044F\u0445 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438, \u0437\u0430\u043F\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044F \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u0431\u043E\u0441\u0438\u043A\u043E\u043C, \u0432 \u043F\u043B\u044F\u0436\u043D\u044B\u0445 \u0438\u043B\u0438 \u0434\u043E\u043C\u0430\u0448\u043D\u0438\u0445 \u0442\u0430\u043F\u043E\u0447\u043A\u0430\u0445 \u0438 \u0442. \u043F., \u0438\u0441\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0441\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442 \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0435 \u043A\u043B\u0430\u0441\u0441\u044B (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0439\u043E\u0433\u0430, \u043F\u0438\u043B\u0430\u0442\u0435\u0441)."},Two:{title:"\u041C\u043E\u0436\u043D\u043E \u043B\u0438 \u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442\u044C \u0441 \u0441\u043E\u0431\u043E\u0439 \u0434\u0435\u0442\u0435\u0439 \u043D\u0430 \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043A\u0438?",description:"\u0412 \u043D\u0430\u0448\u0435\u043C \u0441\u043F\u043E\u0440\u0442\u0437\u0430\u043B\u0435 \u043E\u0431\u0443\u0441\u0442\u0440\u043E\u0435\u043D\u0430 \u0434\u0435\u0442\u0441\u043A\u0430\u044F \u043A\u043E\u043C\u043D\u0430\u0442\u0430, \u0434\u043B\u044F \u043A\u043E\u043C\u0444\u043E\u0440\u0442\u043D\u043E\u0433\u043E \u043F\u0440\u0435\u0431\u044B\u0432\u0430\u043D\u0438\u044F \u0440\u0435\u0431\u0435\u043D\u043A\u0430. \u0422\u0430\u043A \u0436\u0435 \u0432 \u043D\u0430\u0448\u0438\u0445 \u0441\u043E\u0446 \u0441\u0435\u0442\u044F\u0445 \u0432\u044B\u0432\u0435\u0448\u0435\u043D\u044B \u0447\u0430\u0441\u044B \u0440\u0430\u0431\u043E\u0442\u044B \u0430\u043D\u0438\u043C\u0430\u0442\u043E\u0440\u043E\u0432."},Three:{title:"\u041A\u0430\u043A\u0438\u0435 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u0430 \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F \u0446\u0435\u043D\u0442\u0440\u0430?",description:"\u0415\u0441\u0442\u044C \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0445 \u043F\u0440\u0430\u0432\u0438\u043B \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0441\u043E\u0431\u043B\u044E\u0441\u0442\u0438 \u043F\u0435\u0440\u0435\u0434 \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043A\u043E\u0439. \u0423 \u0432\u0430\u0441 \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0441 \u0441\u043E\u0431\u043E\u0439 \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043E\u0447\u043D\u0430\u044F \u0444\u043E\u0440\u043C\u0430. \u041C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0430\u044F \u0441\u043F\u0440\u0430\u0432\u043A\u0430 \u043E \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0438\u0439 \u043F\u0440\u043E\u0442\u0438\u0432\u043E\u043F\u043E\u043A\u0430\u0437\u0430\u043D\u0438\u0439. \u0417\u0430\u043F\u0440\u0435\u0449\u0435\u043D\u043E \u043F\u0440\u0438\u043D\u043E\u0441\u0438\u0442\u044C \u043F\u0440\u043E\u0434\u0443\u043A\u0442\u044B \u043F\u0438\u0442\u0430\u043D\u0438\u044F \u0441 \u0441\u043E\u0431\u043E\u0439. \u0414\u043B\u044F \u0434\u0435\u0442\u0435\u0439 \u0440\u0430\u0437\u043D\u044B\u0445 \u0432\u043E\u0437\u0440\u0430\u0441\u0442\u043E\u0432 \u0435\u0441\u0442\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u044F \u043D\u0430 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0441\u0435\u043A\u0446\u0438\u0438 \u0437\u0430\u043B\u0430."},Four:{title:"\u041D\u0443\u0436\u043D\u0430 \u043B\u0438 \u043C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0430\u044F \u0441\u043F\u0440\u0430\u0432\u043A\u0430 \u0434\u043B\u044F \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F \u0437\u0430\u043B\u043E\u0432 \u0438 \u0431\u0430\u0441\u0441\u0435\u0439\u043D\u0430?",description:"\u0414\u043B\u044F \u043E\u0431\u0449\u0435\u0433\u043E \u043F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F \u0442\u0440\u0435\u043D\u0430\u0436\u0435\u0440\u043D\u043E\u0433\u043E \u0437\u0430\u043B\u0430 \u0441\u043F\u0440\u0430\u0432\u043A\u0430 \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F. \u041E\u0434\u043D\u0430\u043A\u043E, \u0435\u0441\u043B\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u043C\u0435\u0434\u0438\u0446\u0438\u043D\u0441\u043A\u0438\u0435 \u0443\u0441\u043B\u043E\u0432\u0438\u044F \u0438\u043B\u0438 \u0437\u0430\u0431\u043E\u043B\u0435\u0432\u0430\u043D\u0438\u044F, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0433\u0443\u0442 \u043F\u043E\u0432\u043B\u0438\u044F\u0442\u044C \u043D\u0430 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u044C \u0442\u0440\u0435\u043D\u0438\u0440\u043E\u0432\u043E\u043A, \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u043E\u0432\u0430\u043D\u043E \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0441\u043F\u0440\u0430\u0432\u043A\u0443 \u043E\u0442 \u0432\u0440\u0430\u0447\u0430. \u0414\u043B\u044F \u0431\u0430\u0441\u0441\u0435\u0439\u043D\u0430 \u0441\u043F\u0440\u0430\u0432\u043A\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u0432 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u043C \u043F\u043E\u0440\u044F\u0434\u043A\u0435."}}},e={center:"faq__button--center",subscription:"faq__button--subscription",services:"faq__button--services",rules:"faq__button--rules"};export{e as ClassList,t as FaqContent}; diff --git a/docs/scripts/swipers.js b/docs/scripts/swipers.js new file mode 100644 index 0000000..465e66e --- /dev/null +++ b/docs/scripts/swipers.js @@ -0,0 +1 @@ +function ue(s){return s!==null&&typeof s=="object"&&"constructor"in s&&s.constructor===Object}function J(s,e){s===void 0&&(s={}),e===void 0&&(e={}),Object.keys(e).forEach(t=>{s[t]===void 0?s[t]=e[t]:ue(e[t])&&ue(s[t])&&Object.keys(e[t]).length>0&&J(s[t],e[t])})}var me={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function N(){let s=typeof document<"u"?document:{};return J(s,me),s}var Oe={document:me,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:s=>typeof setTimeout>"u"?(s(),null):setTimeout(s,0),cancelAnimationFrame(s){typeof setTimeout<"u"&&clearTimeout(s)}};function O(){let s=typeof window<"u"?window:{};return J(s,Oe),s}function ze(s){return s===void 0&&(s=""),s.trim().split(" ").filter(e=>!!e.trim())}function fe(s){let e=s;Object.keys(e).forEach(t=>{try{e[t]=null}catch{}try{delete e[t]}catch{}})}function Y(s,e){return e===void 0&&(e=0),setTimeout(s,e)}function H(){return Date.now()}function De(s){let e=O(),t;return e.getComputedStyle&&(t=e.getComputedStyle(s,null)),!t&&s.currentStyle&&(t=s.currentStyle),t||(t=s.style),t}function he(s,e){e===void 0&&(e="x");let t=O(),i,a,r,o=De(s);return t.WebKitCSSMatrix?(a=o.transform||o.webkitTransform,a.split(",").length>6&&(a=a.split(", ").map(n=>n.replace(",",".")).join(", ")),r=new t.WebKitCSSMatrix(a==="none"?"":a)):(r=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=r.toString().split(",")),e==="x"&&(a=t.WebKitCSSMatrix?r.m41:i.length===16?parseFloat(i[12]):parseFloat(i[4])),e==="y"&&(a=t.WebKitCSSMatrix?r.m42:i.length===16?parseFloat(i[13]):parseFloat(i[5])),a||0}function W(s){return typeof s=="object"&&s!==null&&s.constructor&&Object.prototype.toString.call(s).slice(8,-1)==="Object"}function Ge(s){return typeof window<"u"&&window.HTMLElement!==void 0?s instanceof HTMLElement:s&&(s.nodeType===1||s.nodeType===11)}function z(){let s=Object(arguments.length<=0?void 0:arguments[0]),e=["__proto__","constructor","prototype"];for(let t=1;te.indexOf(r)<0);for(let r=0,o=a.length;rr?"next":"prev",u=(g,m)=>c==="next"&&g>=m||c==="prev"&&g<=m,h=()=>{o=new Date().getTime(),n===null&&(n=o);let g=Math.max(Math.min((o-n)/l,1),0),m=.5-Math.cos(g*Math.PI)/2,f=r+m*(t-r);if(u(f,t)&&(f=t),e.wrapperEl.scrollTo({[i]:f}),u(f,t))return e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.scrollSnapType="",setTimeout(()=>{e.wrapperEl.style.overflow="",e.wrapperEl.scrollTo({[i]:f})}),void a.cancelAnimationFrame(e.cssModeFrameID);e.cssModeFrameID=a.requestAnimationFrame(h)};h()}function D(s,e){e===void 0&&(e="");let t=[...s.children];return s instanceof HTMLSlotElement&&t.push(...s.assignedElements()),e?t.filter(i=>i.matches(e)):t}function ge(s,e){let t=e.contains(s);return!t&&e instanceof HTMLSlotElement?[...element.assignedElements()].includes(s):t}function j(s){try{return void console.warn(s)}catch{}}function _(s,e){e===void 0&&(e=[]);let t=document.createElement(s);return t.classList.add(...Array.isArray(e)?e:ze(e)),t}function ve(s,e){let t=[];for(;s.previousElementSibling;){let i=s.previousElementSibling;e?i.matches(e)&&t.push(i):t.push(i),s=i}return t}function we(s,e){let t=[];for(;s.nextElementSibling;){let i=s.nextElementSibling;e?i.matches(e)&&t.push(i):t.push(i),s=i}return t}function $(s,e){return O().getComputedStyle(s,null).getPropertyValue(e)}function F(s){let e,t=s;if(t){for(e=0;(t=t.previousSibling)!==null;)t.nodeType===1&&(e+=1);return e}}function X(s,e){let t=[],i=s.parentElement;for(;i;)e?i.matches(e)&&t.push(i):t.push(i),i=i.parentElement;return t}function q(s,e,t){let i=O();return t?s[e==="width"?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(s,null).getPropertyValue(e==="width"?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(s,null).getPropertyValue(e==="width"?"margin-left":"margin-bottom")):s.offsetWidth}function k(s){return(Array.isArray(s)?s:[s]).filter(e=>!!e)}var Z,ee,te;function $e(){let s=O(),e=N();return{smoothScroll:e.documentElement&&e.documentElement.style&&"scrollBehavior"in e.documentElement.style,touch:!!("ontouchstart"in s||s.DocumentTouch&&e instanceof s.DocumentTouch)}}function Ee(){return Z||(Z=$e()),Z}function Be(s){let{userAgent:e}=s===void 0?{}:s,t=Ee(),i=O(),a=i.navigator.platform,r=e||i.navigator.userAgent,o={ios:!1,android:!1},n=i.screen.width,l=i.screen.height,c=r.match(/(Android);?[\s\/]+([\d.]+)?/),u=r.match(/(iPad).*OS\s([\d_]+)/),h=r.match(/(iPod)(.*OS\s([\d_]+))?/),g=!u&&r.match(/(iPhone\sOS|iOS)\s([\d_]+)/),m=a==="Win32",f=a==="MacIntel";return!u&&f&&t.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${n}x${l}`)>=0&&(u=r.match(/(Version)\/([\d.]+)/),u||(u=[0,1,"13_0_0"]),f=!1),c&&!m&&(o.os="android",o.android=!0),(u||g||h)&&(o.os="ios",o.ios=!0),o}function Ce(s){return s===void 0&&(s={}),ee||(ee=Be(s)),ee}function Ne(){let s=O(),e=Ce(),t=!1;function i(){let o=s.navigator.userAgent.toLowerCase();return o.indexOf("safari")>=0&&o.indexOf("chrome")<0&&o.indexOf("android")<0}if(i()){let o=String(s.navigator.userAgent);if(o.includes("Version/")){let[n,l]=o.split("Version/")[1].split(" ")[0].split(".").map(c=>Number(c));t=n<16||n===16&&l<2}}let a=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(s.navigator.userAgent),r=i();return{isSafari:t||r,needPerspectiveFix:t,need3dFix:r||a&&e.ios,isWebView:a}}function _e(){return te||(te=Ne()),te}function Fe(s){let{swiper:e,on:t,emit:i}=s,a=O(),r=null,o=null,n=()=>{e&&!e.destroyed&&e.initialized&&(i("beforeResize"),i("resize"))},l=()=>{e&&!e.destroyed&&e.initialized&&i("orientationchange")};t("init",()=>{e.params.resizeObserver&&a.ResizeObserver!==void 0?e&&!e.destroyed&&e.initialized&&(r=new ResizeObserver(c=>{o=a.requestAnimationFrame(()=>{let{width:u,height:h}=e,g=u,m=h;c.forEach(f=>{let{contentBoxSize:S,contentRect:d,target:p}=f;p&&p!==e.el||(g=d?d.width:(S[0]||S).inlineSize,m=d?d.height:(S[0]||S).blockSize)}),g===u&&m===h||n()})}),r.observe(e.el)):(a.addEventListener("resize",n),a.addEventListener("orientationchange",l))}),t("destroy",()=>{o&&a.cancelAnimationFrame(o),r&&r.unobserve&&e.el&&(r.unobserve(e.el),r=null),a.removeEventListener("resize",n),a.removeEventListener("orientationchange",l)})}function Ve(s){let{swiper:e,extendParams:t,on:i,emit:a}=s,r=[],o=O(),n=function(l,c){c===void 0&&(c={});let u=new(o.MutationObserver||o.WebkitMutationObserver)(h=>{if(e.__preventObserver__)return;if(h.length===1)return void a("observerUpdate",h[0]);let g=function(){a("observerUpdate",h[0])};o.requestAnimationFrame?o.requestAnimationFrame(g):o.setTimeout(g,0)});u.observe(l,{attributes:c.attributes===void 0||c.attributes,childList:e.isElement||(c.childList===void 0||c).childList,characterData:c.characterData===void 0||c.characterData}),r.push(u)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",()=>{if(e.params.observer){if(e.params.observeParents){let l=X(e.hostEl);for(let c=0;c{r.forEach(l=>{l.disconnect()}),r.splice(0,r.length)})}var He={on(s,e,t){let i=this;if(!i.eventsListeners||i.destroyed||typeof e!="function")return i;let a=t?"unshift":"push";return s.split(" ").forEach(r=>{i.eventsListeners[r]||(i.eventsListeners[r]=[]),i.eventsListeners[r][a](e)}),i},once(s,e,t){let i=this;if(!i.eventsListeners||i.destroyed||typeof e!="function")return i;function a(){i.off(s,a),a.__emitterProxy&&delete a.__emitterProxy;for(var r=arguments.length,o=new Array(r),n=0;n=0&&e.eventsAnyListeners.splice(t,1),e},off(s,e){let t=this;return!t.eventsListeners||t.destroyed||t.eventsListeners&&s.split(" ").forEach(i=>{e===void 0?t.eventsListeners[i]=[]:t.eventsListeners[i]&&t.eventsListeners[i].forEach((a,r)=>{(a===e||a.__emitterProxy&&a.__emitterProxy===e)&&t.eventsListeners[i].splice(r,1)})}),t},emit(){let s=this;if(!s.eventsListeners||s.destroyed||!s.eventsListeners)return s;let e,t,i;for(var a=arguments.length,r=new Array(a),o=0;o{s.eventsAnyListeners&&s.eventsAnyListeners.length&&s.eventsAnyListeners.forEach(l=>{l.apply(i,[n,...t])}),s.eventsListeners&&s.eventsListeners[n]&&s.eventsListeners[n].forEach(l=>{l.apply(i,t)})}),s}};function Re(){let s=this,e,t,i=s.el;e=s.params.width!==void 0&&s.params.width!==null?s.params.width:i.clientWidth,t=s.params.height!==void 0&&s.params.height!==null?s.params.height:i.clientHeight,e===0&&s.isHorizontal()||t===0&&s.isVertical()||(e=e-parseInt($(i,"padding-left")||0,10)-parseInt($(i,"padding-right")||0,10),t=t-parseInt($(i,"padding-top")||0,10)-parseInt($(i,"padding-bottom")||0,10),Number.isNaN(e)&&(e=0),Number.isNaN(t)&&(t=0),Object.assign(s,{width:e,height:t,size:s.isHorizontal()?e:t}))}function je(){let s=this;function e(x,y){return parseFloat(x.getPropertyValue(s.getDirectionLabel(y))||0)}let t=s.params,{wrapperEl:i,slidesEl:a,size:r,rtlTranslate:o,wrongRTL:n}=s,l=s.virtual&&t.virtual.enabled,c=l?s.virtual.slides.length:s.slides.length,u=D(a,`.${s.params.slideClass}, swiper-slide`),h=l?s.virtual.slides.length:u.length,g=[],m=[],f=[],S=t.slidesOffsetBefore;typeof S=="function"&&(S=t.slidesOffsetBefore.call(s));let d=t.slidesOffsetAfter;typeof d=="function"&&(d=t.slidesOffsetAfter.call(s));let p=s.snapGrid.length,v=s.slidesGrid.length,b=t.spaceBetween,w=-S,C=0,A=0;if(r===void 0)return;typeof b=="string"&&b.indexOf("%")>=0?b=parseFloat(b.replace("%",""))/100*r:typeof b=="string"&&(b=parseFloat(b)),s.virtualSize=-b,u.forEach(x=>{o?x.style.marginLeft="":x.style.marginRight="",x.style.marginBottom="",x.style.marginTop=""}),t.centeredSlides&&t.cssMode&&(R(i,"--swiper-centered-offset-before",""),R(i,"--swiper-centered-offset-after",""));let P=t.grid&&t.grid.rows>1&&s.grid,M;P?s.grid.initSlides(u):s.grid&&s.grid.unsetSlides();let L=t.slidesPerView==="auto"&&t.breakpoints&&Object.keys(t.breakpoints).filter(x=>t.breakpoints[x].slidesPerView!==void 0).length>0;for(let x=0;x1&&g.push(s.virtualSize-r)}if(l&&t.loop){let x=f[0]+b;if(t.slidesPerGroup>1){let y=Math.ceil((s.virtual.slidesBefore+s.virtual.slidesAfter)/t.slidesPerGroup),T=x*t.slidesPerGroup;for(let E=0;E!(t.cssMode&&!t.loop)||T!==u.length-1).forEach(y=>{y.style[x]=`${b}px`})}if(t.centeredSlides&&t.centeredSlidesBounds){let x=0;f.forEach(T=>{x+=T+(b||0)}),x-=b;let y=x-r;g=g.map(T=>T<=0?-S:T>y?y+d:T)}if(t.centerInsufficientSlides){let x=0;f.forEach(T=>{x+=T+(b||0)}),x-=b;let y=(t.slidesOffsetBefore||0)+(t.slidesOffsetAfter||0);if(x+y{g[I]=E-T}),m.forEach((E,I)=>{m[I]=E+T})}}if(Object.assign(s,{slides:u,snapGrid:g,slidesGrid:m,slidesSizesGrid:f}),t.centeredSlides&&t.cssMode&&!t.centeredSlidesBounds){R(i,"--swiper-centered-offset-before",-g[0]+"px"),R(i,"--swiper-centered-offset-after",s.size/2-f[f.length-1]/2+"px");let x=-s.snapGrid[0],y=-s.slidesGrid[0];s.snapGrid=s.snapGrid.map(T=>T+x),s.slidesGrid=s.slidesGrid.map(T=>T+y)}if(h!==c&&s.emit("slidesLengthChange"),g.length!==p&&(s.params.watchOverflow&&s.checkOverflow(),s.emit("snapGridLengthChange")),m.length!==v&&s.emit("slidesGridLengthChange"),t.watchSlidesProgress&&s.updateSlidesOffset(),s.emit("slidesUpdated"),!(l||t.cssMode||t.effect!=="slide"&&t.effect!=="fade")){let x=`${t.containerModifierClass}backface-hidden`,y=s.el.classList.contains(x);h<=t.maxBackfaceHiddenSlides?y||s.el.classList.add(x):y&&s.el.classList.remove(x)}}function qe(s){let e=this,t=[],i=e.virtual&&e.params.virtual.enabled,a,r=0;typeof s=="number"?e.setTransition(s):s===!0&&e.setTransition(e.params.speed);let o=n=>i?e.slides[e.getSlideIndexByData(n)]:e.slides[n];if(e.params.slidesPerView!=="auto"&&e.params.slidesPerView>1)if(e.params.centeredSlides)(e.visibleSlides||[]).forEach(n=>{t.push(n)});else for(a=0;ae.slides.length&&!i)break;t.push(o(n))}else t.push(o(e.activeIndex));for(a=0;ar?n:r}(r||r===0)&&(e.wrapperEl.style.height=`${r}px`)}function We(){let s=this,e=s.slides,t=s.isElement?s.isHorizontal()?s.wrapperEl.offsetLeft:s.wrapperEl.offsetTop:0;for(let i=0;i{e&&!s.classList.contains(t)?s.classList.add(t):!e&&s.classList.contains(t)&&s.classList.remove(t)};function Ye(s){s===void 0&&(s=this&&this.translate||0);let e=this,t=e.params,{slides:i,rtlTranslate:a,snapGrid:r}=e;if(i.length===0)return;i[0].swiperSlideOffset===void 0&&e.updateSlidesOffset();let o=-s;a&&(o=s),e.visibleSlidesIndexes=[],e.visibleSlides=[];let n=t.spaceBetween;typeof n=="string"&&n.indexOf("%")>=0?n=parseFloat(n.replace("%",""))/100*e.size:typeof n=="string"&&(n=parseFloat(n));for(let l=0;l=0&&m<=e.size-e.slidesSizesGrid[l],d=m>=0&&m1&&f<=e.size||m<=0&&f>=e.size;d&&(e.visibleSlides.push(c),e.visibleSlidesIndexes.push(l)),be(c,d,t.slideVisibleClass),be(c,S,t.slideFullyVisibleClass),c.progress=a?-h:h,c.originalProgress=a?-g:g}}function Xe(s){let e=this;if(s===void 0){let u=e.rtlTranslate?-1:1;s=e&&e.translate&&e.translate*u||0}let t=e.params,i=e.maxTranslate()-e.minTranslate(),{progress:a,isBeginning:r,isEnd:o,progressLoop:n}=e,l=r,c=o;if(i===0)a=0,r=!0,o=!0;else{a=(s-e.minTranslate())/i;let u=Math.abs(s-e.minTranslate())<1,h=Math.abs(s-e.maxTranslate())<1;r=u||a<=0,o=h||a>=1,u&&(a=0),h&&(a=1)}if(t.loop){let u=e.getSlideIndexByData(0),h=e.getSlideIndexByData(e.slides.length-1),g=e.slidesGrid[u],m=e.slidesGrid[h],f=e.slidesGrid[e.slidesGrid.length-1],S=Math.abs(s);n=S>=g?(S-g)/f:(S+f-m)/f,n>1&&(n-=1)}Object.assign(e,{progress:a,progressLoop:n,isBeginning:r,isEnd:o}),(t.watchSlidesProgress||t.centeredSlides&&t.autoHeight)&&e.updateSlidesProgress(s),r&&!l&&e.emit("reachBeginning toEdge"),o&&!c&&e.emit("reachEnd toEdge"),(l&&!r||c&&!o)&&e.emit("fromEdge"),e.emit("progress",a)}var se=(s,e,t)=>{e&&!s.classList.contains(t)?s.classList.add(t):!e&&s.classList.contains(t)&&s.classList.remove(t)};function Ue(){let s=this,{slides:e,params:t,slidesEl:i,activeIndex:a}=s,r=s.virtual&&t.virtual.enabled,o=s.grid&&t.grid&&t.grid.rows>1,n=h=>D(i,`.${t.slideClass}${h}, swiper-slide${h}`)[0],l,c,u;if(r)if(t.loop){let h=a-s.virtual.slidesBefore;h<0&&(h=s.virtual.slides.length+h),h>=s.virtual.slides.length&&(h-=s.virtual.slides.length),l=n(`[data-swiper-slide-index="${h}"]`)}else l=n(`[data-swiper-slide-index="${a}"]`);else o?(l=e.filter(h=>h.column===a)[0],u=e.filter(h=>h.column===a+1)[0],c=e.filter(h=>h.column===a-1)[0]):l=e[a];l&&(o||(u=we(l,`.${t.slideClass}, swiper-slide`)[0],t.loop&&!u&&(u=e[0]),c=ve(l,`.${t.slideClass}, swiper-slide`)[0],t.loop&&!c===0&&(c=e[e.length-1]))),e.forEach(h=>{se(h,h===l,t.slideActiveClass),se(h,h===u,t.slideNextClass),se(h,h===c,t.slidePrevClass)}),s.emitSlidesClasses()}var U=(s,e)=>{if(!s||s.destroyed||!s.params)return;let t=e.closest(s.isElement?"swiper-slide":`.${s.params.slideClass}`);if(t){let i=t.querySelector(`.${s.params.lazyPreloaderClass}`);!i&&s.isElement&&(t.shadowRoot?i=t.shadowRoot.querySelector(`.${s.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{t.shadowRoot&&(i=t.shadowRoot.querySelector(`.${s.params.lazyPreloaderClass}`),i&&i.remove())})),i&&i.remove()}},ie=(s,e)=>{if(!s.slides[e])return;let t=s.slides[e].querySelector('[loading="lazy"]');t&&t.removeAttribute("loading")},ne=s=>{if(!s||s.destroyed||!s.params)return;let e=s.params.lazyPreloadPrevNext,t=s.slides.length;if(!t||!e||e<0)return;e=Math.min(e,t);let i=s.params.slidesPerView==="auto"?s.slidesPerViewDynamic():Math.ceil(s.params.slidesPerView),a=s.activeIndex;if(s.params.grid&&s.params.grid.rows>1){let o=a,n=[o-e];return n.push(...Array.from({length:e}).map((l,c)=>o+i+c)),void s.slides.forEach((l,c)=>{n.includes(l.column)&&ie(s,c)})}let r=a+i-1;if(s.params.rewind||s.params.loop)for(let o=a-e;o<=r+e;o+=1){let n=(o%t+t)%t;(nr)&&ie(s,n)}else for(let o=Math.max(a-e,0);o<=Math.min(r+e,t-1);o+=1)o!==a&&(o>r||o=e[r]&&i=e[r]&&i=e[r]&&(a=r);return t.normalizeSlideIndex&&(a<0||a===void 0)&&(a=0),a}function Je(s){let e=this,t=e.rtlTranslate?e.translate:-e.translate,{snapGrid:i,params:a,activeIndex:r,realIndex:o,snapIndex:n}=e,l,c=s,u=m=>{let f=m-e.virtual.slidesBefore;return f<0&&(f=e.virtual.slides.length+f),f>=e.virtual.slides.length&&(f-=e.virtual.slides.length),f};if(c===void 0&&(c=Ke(e)),i.indexOf(t)>=0)l=i.indexOf(t);else{let m=Math.min(a.slidesPerGroupSkip,c);l=m+Math.floor((c-m)/a.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),c===r&&!e.params.loop)return void(l!==n&&(e.snapIndex=l,e.emit("snapIndexChange")));if(c===r&&e.params.loop&&e.virtual&&e.params.virtual.enabled)return void(e.realIndex=u(c));let h=e.grid&&a.grid&&a.grid.rows>1,g;if(e.virtual&&a.virtual.enabled&&a.loop)g=u(c);else if(h){let m=e.slides.filter(S=>S.column===c)[0],f=parseInt(m.getAttribute("data-swiper-slide-index"),10);Number.isNaN(f)&&(f=Math.max(e.slides.indexOf(m),0)),g=Math.floor(f/a.grid.rows)}else if(e.slides[c]){let m=e.slides[c].getAttribute("data-swiper-slide-index");g=m?parseInt(m,10):c}else g=c;Object.assign(e,{previousSnapIndex:n,snapIndex:l,previousRealIndex:o,realIndex:g,previousIndex:r,activeIndex:c}),e.initialized&&ne(e),e.emit("activeIndexChange"),e.emit("snapIndexChange"),(e.initialized||e.params.runCallbacksOnInit)&&(o!==g&&e.emit("realIndexChange"),e.emit("slideChange"))}function Qe(s,e){let t=this,i=t.params,a=s.closest(`.${i.slideClass}, swiper-slide`);!a&&t.isElement&&e&&e.length>1&&e.includes(s)&&[...e.slice(e.indexOf(s)+1,e.length)].forEach(n=>{!a&&n.matches&&n.matches(`.${i.slideClass}, swiper-slide`)&&(a=n)});let r,o=!1;if(a){for(let n=0;nl?l:i&&so?"next":r=l.length&&(d=l.length-1);let p=-l[d];if(n.normalizeSlideIndex)for(let b=0;b=C&&w=C&&w=C&&(o=b)}if(r.initialized&&o!==h&&(!r.allowSlideNext&&(g?p>r.translate&&p>r.minTranslate():pr.translate&&p>r.maxTranslate()&&(h||0)!==o))return!1;let v;if(o!==(u||0)&&t&&r.emit("beforeSlideChangeStart"),r.updateProgress(p),v=o>h?"next":o0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{m[b?"scrollLeft":"scrollTop"]=w})):m[b?"scrollLeft":"scrollTop"]=w,C&&requestAnimationFrame(()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1})}else{if(!r.support.smoothScroll)return Q({swiper:r,targetPosition:w,side:b?"left":"top"}),!0;m.scrollTo({[b?"left":"top"]:w,behavior:"smooth"})}return!0}return r.setTransition(e),r.setTranslate(p),r.updateActiveIndex(o),r.updateSlidesClasses(),r.emit("beforeTransitionStart",e,i),r.transitionStart(t,v),e===0?r.transitionEnd(t,v):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(b){r&&!r.destroyed&&b.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(t,v))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0}function pt(s,e,t,i){s===void 0&&(s=0),t===void 0&&(t=!0),typeof s=="string"&&(s=parseInt(s,10));let a=this;if(a.destroyed)return;e===void 0&&(e=a.params.speed);let r=a.grid&&a.params.grid&&a.params.grid.rows>1,o=s;if(a.params.loop)if(a.virtual&&a.params.virtual.enabled)o+=a.virtual.slidesBefore;else{let n;if(r){let g=o*a.params.grid.rows;n=a.slides.filter(m=>1*m.getAttribute("data-swiper-slide-index")===g)[0].column}else n=a.getSlideIndexByData(o);let l=r?Math.ceil(a.slides.length/a.params.grid.rows):a.slides.length,{centeredSlides:c}=a.params,u=a.params.slidesPerView;u==="auto"?u=a.slidesPerViewDynamic():(u=Math.ceil(parseFloat(a.params.slidesPerView,10)),c&&u%2==0&&(u+=1));let h=l-n1*m.getAttribute("data-swiper-slide-index")===g)[0].column}else o=a.getSlideIndexByData(o)}return requestAnimationFrame(()=>{a.slideTo(o,e,t,i)}),a}function ut(s,e,t){e===void 0&&(e=!0);let i=this,{enabled:a,params:r,animating:o}=i;if(!a||i.destroyed)return i;s===void 0&&(s=i.params.speed);let n=r.slidesPerGroup;r.slidesPerView==="auto"&&r.slidesPerGroup===1&&r.slidesPerGroupAuto&&(n=Math.max(i.slidesPerViewDynamic("current",!0),1));let l=i.activeIndex{i.slideTo(i.activeIndex+l,s,e,t)}),!0}return r.rewind&&i.isEnd?i.slideTo(0,s,e,t):i.slideTo(i.activeIndex+l,s,e,t)}function mt(s,e,t){e===void 0&&(e=!0);let i=this,{params:a,snapGrid:r,slidesGrid:o,rtlTranslate:n,enabled:l,animating:c}=i;if(!l||i.destroyed)return i;s===void 0&&(s=i.params.speed);let u=i.virtual&&a.virtual.enabled;if(a.loop){if(c&&!u&&a.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function h(d){return d<0?-Math.floor(Math.abs(d)):Math.floor(d)}let g=h(n?i.translate:-i.translate),m=r.map(d=>h(d)),f=r[m.indexOf(g)-1];if(f===void 0&&a.cssMode){let d;r.forEach((p,v)=>{g>=p&&(d=v)}),d!==void 0&&(f=r[d>0?d-1:d])}let S=0;if(f!==void 0&&(S=o.indexOf(f),S<0&&(S=i.activeIndex-1),a.slidesPerView==="auto"&&a.slidesPerGroup===1&&a.slidesPerGroupAuto&&(S=S-i.slidesPerViewDynamic("previous",!0)+1,S=Math.max(S,0))),a.rewind&&i.isBeginning){let d=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(d,s,e,t)}return a.loop&&i.activeIndex===0&&a.cssMode?(requestAnimationFrame(()=>{i.slideTo(S,s,e,t)}),!0):i.slideTo(S,s,e,t)}function ft(s,e,t){e===void 0&&(e=!0);let i=this;if(!i.destroyed)return s===void 0&&(s=i.params.speed),i.slideTo(i.activeIndex,s,e,t)}function ht(s,e,t,i){e===void 0&&(e=!0),i===void 0&&(i=.5);let a=this;if(a.destroyed)return;s===void 0&&(s=a.params.speed);let r=a.activeIndex,o=Math.min(a.params.slidesPerGroupSkip,r),n=o+Math.floor((r-o)/a.params.slidesPerGroup),l=a.rtlTranslate?a.translate:-a.translate;if(l>=a.snapGrid[n]){let c=a.snapGrid[n];l-c>(a.snapGrid[n+1]-c)*i&&(r+=a.params.slidesPerGroup)}else{let c=a.snapGrid[n-1];l-c<=(a.snapGrid[n]-c)*i&&(r-=a.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,a.slidesGrid.length-1),a.slideTo(r,s,e,t)}function gt(){let s=this;if(s.destroyed)return;let{params:e,slidesEl:t}=s,i=e.slidesPerView==="auto"?s.slidesPerViewDynamic():e.slidesPerView,a,r=s.clickedIndex,o=s.isElement?"swiper-slide":`.${e.slideClass}`;if(e.loop){if(s.animating)return;a=parseInt(s.clickedSlide.getAttribute("data-swiper-slide-index"),10),e.centeredSlides?rs.slides.length-s.loopedSlides+i/2?(s.loopFix(),r=s.getSlideIndex(D(t,`${o}[data-swiper-slide-index="${a}"]`)[0]),Y(()=>{s.slideTo(r)})):s.slideTo(r):r>s.slides.length-i?(s.loopFix(),r=s.getSlideIndex(D(t,`${o}[data-swiper-slide-index="${a}"]`)[0]),Y(()=>{s.slideTo(r)})):s.slideTo(r)}else s.slideTo(r)}var vt={slideTo:ct,slideToLoop:pt,slideNext:ut,slidePrev:mt,slideReset:ft,slideToClosest:ht,slideToClickedSlide:gt};function wt(s){let e=this,{params:t,slidesEl:i}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;let a=()=>{D(i,`.${t.slideClass}, swiper-slide`).forEach((u,h)=>{u.setAttribute("data-swiper-slide-index",h)})},r=e.grid&&t.grid&&t.grid.rows>1,o=t.slidesPerGroup*(r?t.grid.rows:1),n=e.slides.length%o!=0,l=r&&e.slides.length%t.grid.rows!=0,c=u=>{for(let h=0;h1;c.lengthT.classList.contains(m.slideActiveClass))[0]):C=r;let A=i==="next"||!i,P=i==="prev"||!i,M=0,L=0,x=v?Math.ceil(c.length/m.grid.rows):c.length,y=(v?c[r].column:r)+(f&&a===void 0?-S/2+.5:0);if(y=0;G-=1)c[G].column===I&&b.push(G)}else b.push(x-E-1)}}else if(y+S>x-p){L=Math.max(y-(x-2*p),d);for(let T=0;T{I.column===E&&w.push(G)}):w.push(E)}}if(l.__preventObserver__=!0,requestAnimationFrame(()=>{l.__preventObserver__=!1}),P&&b.forEach(T=>{c[T].swiperLoopMoveDOM=!0,g.prepend(c[T]),c[T].swiperLoopMoveDOM=!1}),A&&w.forEach(T=>{c[T].swiperLoopMoveDOM=!0,g.append(c[T]),c[T].swiperLoopMoveDOM=!1}),l.recalcSlides(),m.slidesPerView==="auto"?l.updateSlides():v&&(b.length>0&&P||w.length>0&&A)&&l.slides.forEach((T,E)=>{l.grid.updateSlide(E,T,l.slides)}),m.watchSlidesProgress&&l.updateSlidesOffset(),t){if(b.length>0&&P){if(e===void 0){let T=l.slidesGrid[C],E=l.slidesGrid[C+M]-T;n?l.setTranslate(l.translate-E):(l.slideTo(C+Math.ceil(M),0,!1,!0),a&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-E,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-E))}else if(a){let T=v?b.length/m.grid.rows:b.length;l.slideTo(l.activeIndex+T,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(w.length>0&&A)if(e===void 0){let T=l.slidesGrid[C],E=l.slidesGrid[C-L]-T;n?l.setTranslate(l.translate-E):(l.slideTo(C-L,0,!1,!0),a&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-E,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-E))}else{let T=v?w.length/m.grid.rows:w.length;l.slideTo(l.activeIndex-T,0,!1,!0)}}if(l.allowSlidePrev=u,l.allowSlideNext=h,l.controller&&l.controller.control&&!o){let T={slideRealIndex:e,direction:i,setTranslate:a,activeSlideIndex:r,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach(E=>{!E.destroyed&&E.params.loop&&E.loopFix({...T,slideTo:E.params.slidesPerView===m.slidesPerView&&t})}):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...T,slideTo:l.controller.control.params.slidesPerView===m.slidesPerView&&t})}l.emit("loopFix")}function St(){let s=this,{params:e,slidesEl:t}=s;if(!e.loop||s.virtual&&s.params.virtual.enabled)return;s.recalcSlides();let i=[];s.slides.forEach(a=>{let r=a.swiperSlideIndex===void 0?1*a.getAttribute("data-swiper-slide-index"):a.swiperSlideIndex;i[r]=a}),s.slides.forEach(a=>{a.removeAttribute("data-swiper-slide-index")}),i.forEach(a=>{t.append(a)}),s.recalcSlides(),s.slideTo(s.realIndex,0)}var Tt={loopCreate:wt,loopFix:bt,loopDestroy:St};function yt(s){let e=this;if(!e.params.simulateTouch||e.params.watchOverflow&&e.isLocked||e.params.cssMode)return;let t=e.params.touchEventsTarget==="container"?e.el:e.wrapperEl;e.isElement&&(e.__preventObserver__=!0),t.style.cursor="move",t.style.cursor=s?"grabbing":"grab",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1})}function xt(){let s=this;s.params.watchOverflow&&s.isLocked||s.params.cssMode||(s.isElement&&(s.__preventObserver__=!0),s[s.params.touchEventsTarget==="container"?"el":"wrapperEl"].style.cursor="",s.isElement&&requestAnimationFrame(()=>{s.__preventObserver__=!1}))}var Et={setGrabCursor:yt,unsetGrabCursor:xt};function Ct(s,e){return e===void 0&&(e=this),function t(i){if(!i||i===N()||i===O())return null;i.assignedSlot&&(i=i.assignedSlot);let a=i.closest(s);return a||i.getRootNode?a||t(i.getRootNode().host):null}(e)}function Se(s,e,t){let i=O(),{params:a}=s,r=a.edgeSwipeDetection,o=a.edgeSwipeThreshold;return!r||!(t<=o||t>=i.innerWidth-o)||r==="prevent"&&(e.preventDefault(),!0)}function Mt(s){let e=this,t=N(),i=s;i.originalEvent&&(i=i.originalEvent);let a=e.touchEventsData;if(i.type==="pointerdown"){if(a.pointerId!==null&&a.pointerId!==i.pointerId)return;a.pointerId=i.pointerId}else i.type==="touchstart"&&i.targetTouches.length===1&&(a.touchId=i.targetTouches[0].identifier);if(i.type==="touchstart")return void Se(e,i,i.targetTouches[0].pageX);let{params:r,touches:o,enabled:n}=e;if(!n||!r.simulateTouch&&i.pointerType==="mouse"||e.animating&&r.preventInteractionOnTransition)return;!e.animating&&r.cssMode&&r.loop&&e.loopFix();let l=i.target;if(r.touchEventsTarget==="wrapper"&&!ge(l,e.wrapperEl)||"which"in i&&i.which===3||"button"in i&&i.button>0||a.isTouched&&a.isMoved)return;let c=!!r.noSwipingClass&&r.noSwipingClass!=="",u=i.composedPath?i.composedPath():i.path;c&&i.target&&i.target.shadowRoot&&u&&(l=u[0]);let h=r.noSwipingSelector?r.noSwipingSelector:`.${r.noSwipingClass}`,g=!(!i.target||!i.target.shadowRoot);if(r.noSwiping&&(g?Ct(h,l):l.closest(h)))return void(e.allowClick=!0);if(r.swipeHandler&&!l.closest(r.swipeHandler))return;o.currentX=i.pageX,o.currentY=i.pageY;let m=o.currentX,f=o.currentY;if(!Se(e,i,m))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=m,o.startY=f,a.touchStartTime=H(),e.allowClick=!0,e.updateSize(),e.swipeDirection=void 0,r.threshold>0&&(a.allowThresholdMove=!1);let S=!0;l.matches(a.focusableElements)&&(S=!1,l.nodeName==="SELECT"&&(a.isTouched=!1)),t.activeElement&&t.activeElement.matches(a.focusableElements)&&t.activeElement!==l&&t.activeElement.blur();let d=S&&e.allowTouchMove&&r.touchStartPreventDefault;!r.touchStartForcePreventDefault&&!d||l.isContentEditable||i.preventDefault(),r.freeMode&&r.freeMode.enabled&&e.freeMode&&e.animating&&!r.cssMode&&e.freeMode.onTouchStart(),e.emit("touchStart",i)}function Pt(s){let e=N(),t=this,i=t.touchEventsData,{params:a,touches:r,rtlTranslate:o,enabled:n}=t;if(!n||!a.simulateTouch&&s.pointerType==="mouse")return;let l,c=s;if(c.originalEvent&&(c=c.originalEvent),c.type==="pointermove"&&(i.touchId!==null||c.pointerId!==i.pointerId))return;if(c.type==="touchmove"){if(l=[...c.changedTouches].filter(C=>C.identifier===i.touchId)[0],!l||l.identifier!==i.touchId)return}else l=c;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&t.emit("touchMoveOpposite",c));let u=l.pageX,h=l.pageY;if(c.preventedByNestedSwiper)return r.startX=u,void(r.startY=h);if(!t.allowTouchMove)return c.target.matches(i.focusableElements)||(t.allowClick=!1),void(i.isTouched&&(Object.assign(r,{startX:u,startY:h,currentX:u,currentY:h}),i.touchStartTime=H()));if(a.touchReleaseOnEdges&&!a.loop){if(t.isVertical()){if(hr.startY&&t.translate>=t.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(ur.startX&&t.translate>=t.minTranslate())return}if(e.activeElement&&c.target===e.activeElement&&c.target.matches(i.focusableElements))return i.isMoved=!0,void(t.allowClick=!1);i.allowTouchCallbacks&&t.emit("touchMove",c),r.previousX=r.currentX,r.previousY=r.currentY,r.currentX=u,r.currentY=h;let g=r.currentX-r.startX,m=r.currentY-r.startY;if(t.params.threshold&&Math.sqrt(g**2+m**2)=25&&(C=180*Math.atan2(Math.abs(m),Math.abs(g))/Math.PI,i.isScrolling=t.isHorizontal()?C>a.touchAngle:90-C>a.touchAngle)}if(i.isScrolling&&t.emit("touchMoveOpposite",c),i.startMoving===void 0&&(r.currentX===r.startX&&r.currentY===r.startY||(i.startMoving=!0)),i.isScrolling||c.type==="touchmove"&&i.preventTouchMoveFromPointerMove)return void(i.isTouched=!1);if(!i.startMoving)return;t.allowClick=!1,!a.cssMode&&c.cancelable&&c.preventDefault(),a.touchMoveStopPropagation&&!a.nested&&c.stopPropagation();let f=t.isHorizontal()?g:m,S=t.isHorizontal()?r.currentX-r.previousX:r.currentY-r.previousY;a.oneWayMovement&&(f=Math.abs(f)*(o?1:-1),S=Math.abs(S)*(o?1:-1)),r.diff=f,f*=a.touchRatio,o&&(f=-f,S=-S);let d=t.touchesDirection;t.swipeDirection=f>0?"prev":"next",t.touchesDirection=S>0?"prev":"next";let p=t.params.loop&&!a.cssMode,v=t.touchesDirection==="next"&&t.allowSlideNext||t.touchesDirection==="prev"&&t.allowSlidePrev;if(!i.isMoved){if(p&&v&&t.loopFix({direction:t.swipeDirection}),i.startTranslate=t.getTranslate(),t.setTransition(0),t.animating){let C=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});t.wrapperEl.dispatchEvent(C)}i.allowMomentumBounce=!1,!a.grabCursor||t.allowSlideNext!==!0&&t.allowSlidePrev!==!0||t.setGrabCursor(!0),t.emit("sliderFirstMove",c)}if(new Date().getTime(),i.isMoved&&i.allowThresholdMove&&d!==t.touchesDirection&&p&&v&&Math.abs(f)>=1)return Object.assign(r,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);t.emit("sliderMove",c),i.isMoved=!0,i.currentTranslate=f+i.startTranslate;let b=!0,w=a.resistanceRatio;if(a.touchReleaseOnEdges&&(w=0),f>0?(p&&v&&i.allowThresholdMove&&i.currentTranslate>(a.centeredSlides?t.minTranslate()-t.slidesSizesGrid[t.activeIndex+1]:t.minTranslate())&&t.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>t.minTranslate()&&(b=!1,a.resistance&&(i.currentTranslate=t.minTranslate()-1+(-t.minTranslate()+i.startTranslate+f)**w))):f<0&&(p&&v&&i.allowThresholdMove&&i.currentTranslate<(a.centeredSlides?t.maxTranslate()+t.slidesSizesGrid[t.slidesSizesGrid.length-1]:t.maxTranslate())&&t.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:t.slides.length-(a.slidesPerView==="auto"?t.slidesPerViewDynamic():Math.ceil(parseFloat(a.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),t.allowSlidePrev||t.allowSlideNext||(i.currentTranslate=i.startTranslate),a.threshold>0){if(!(Math.abs(f)>a.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,r.startX=r.currentX,r.startY=r.currentY,i.currentTranslate=i.startTranslate,void(r.diff=t.isHorizontal()?r.currentX-r.startX:r.currentY-r.startY)}a.followFinger&&!a.cssMode&&((a.freeMode&&a.freeMode.enabled&&t.freeMode||a.watchSlidesProgress)&&(t.updateActiveIndex(),t.updateSlidesClasses()),a.freeMode&&a.freeMode.enabled&&t.freeMode&&t.freeMode.onTouchMove(),t.updateProgress(i.currentTranslate),t.setTranslate(i.currentTranslate))}function Lt(s){let e=this,t=e.touchEventsData,i,a=s;if(a.originalEvent&&(a=a.originalEvent),a.type==="touchend"||a.type==="touchcancel"){if(i=[...a.changedTouches].filter(w=>w.identifier===t.touchId)[0],!i||i.identifier!==t.touchId)return}else{if(t.touchId!==null||a.pointerId!==t.pointerId)return;i=a}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(a.type)&&!(["pointercancel","contextmenu"].includes(a.type)&&(e.browser.isSafari||e.browser.isWebView)))return;t.pointerId=null,t.touchId=null;let{params:r,touches:o,rtlTranslate:n,slidesGrid:l,enabled:c}=e;if(!c||!r.simulateTouch&&a.pointerType==="mouse")return;if(t.allowTouchCallbacks&&e.emit("touchEnd",a),t.allowTouchCallbacks=!1,!t.isTouched)return t.isMoved&&r.grabCursor&&e.setGrabCursor(!1),t.isMoved=!1,void(t.startMoving=!1);r.grabCursor&&t.isMoved&&t.isTouched&&(e.allowSlideNext===!0||e.allowSlidePrev===!0)&&e.setGrabCursor(!1);let u=H(),h=u-t.touchStartTime;if(e.allowClick){let w=a.path||a.composedPath&&a.composedPath();e.updateClickedSlide(w&&w[0]||a.target,w),e.emit("tap click",a),h<300&&u-t.lastClickTime<300&&e.emit("doubleTap doubleClick",a)}if(t.lastClickTime=H(),Y(()=>{e.destroyed||(e.allowClick=!0)}),!t.isTouched||!t.isMoved||!e.swipeDirection||o.diff===0&&!t.loopSwapReset||t.currentTranslate===t.startTranslate&&!t.loopSwapReset)return t.isTouched=!1,t.isMoved=!1,void(t.startMoving=!1);let g;if(t.isTouched=!1,t.isMoved=!1,t.startMoving=!1,g=r.followFinger?n?e.translate:-e.translate:-t.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void e.freeMode.onTouchEnd({currentPos:g});let m=g>=-e.maxTranslate()&&!e.params.loop,f=0,S=e.slidesSizesGrid[0];for(let w=0;w=l[w]&&g=l[w])&&(f=w,S=l[l.length-1]-l[l.length-2])}let d=null,p=null;r.rewind&&(e.isBeginning?p=r.virtual&&r.virtual.enabled&&e.virtual?e.virtual.slides.length-1:e.slides.length-1:e.isEnd&&(d=0));let v=(g-l[f])/S,b=fr.longSwipesMs){if(!r.longSwipes)return void e.slideTo(e.activeIndex);e.swipeDirection==="next"&&(v>=r.longSwipesRatio?e.slideTo(r.rewind&&e.isEnd?d:f+b):e.slideTo(f)),e.swipeDirection==="prev"&&(v>1-r.longSwipesRatio?e.slideTo(f+b):p!==null&&v<0&&Math.abs(v)>r.longSwipesRatio?e.slideTo(p):e.slideTo(f))}else{if(!r.shortSwipes)return void e.slideTo(e.activeIndex);e.navigation&&(a.target===e.navigation.nextEl||a.target===e.navigation.prevEl)?a.target===e.navigation.nextEl?e.slideTo(f+b):e.slideTo(f):(e.swipeDirection==="next"&&e.slideTo(d!==null?d:f+b),e.swipeDirection==="prev"&&e.slideTo(p!==null?p:f))}}function Te(){let s=this,{params:e,el:t}=s;if(t&&t.offsetWidth===0)return;e.breakpoints&&s.setBreakpoint();let{allowSlideNext:i,allowSlidePrev:a,snapGrid:r}=s,o=s.virtual&&s.params.virtual.enabled;s.allowSlideNext=!0,s.allowSlidePrev=!0,s.updateSize(),s.updateSlides(),s.updateSlidesClasses();let n=o&&e.loop;!(e.slidesPerView==="auto"||e.slidesPerView>1)||!s.isEnd||s.isBeginning||s.params.centeredSlides||n?s.params.loop&&!o?s.slideToLoop(s.realIndex,0,!1,!0):s.slideTo(s.activeIndex,0,!1,!0):s.slideTo(s.slides.length-1,0,!1,!0),s.autoplay&&s.autoplay.running&&s.autoplay.paused&&(clearTimeout(s.autoplay.resizeTimeout),s.autoplay.resizeTimeout=setTimeout(()=>{s.autoplay&&s.autoplay.running&&s.autoplay.paused&&s.autoplay.resume()},500)),s.allowSlidePrev=a,s.allowSlideNext=i,s.params.watchOverflow&&r!==s.snapGrid&&s.checkOverflow()}function kt(s){let e=this;e.enabled&&(e.allowClick||(e.params.preventClicks&&s.preventDefault(),e.params.preventClicksPropagation&&e.animating&&(s.stopPropagation(),s.stopImmediatePropagation())))}function It(){let s=this,{wrapperEl:e,rtlTranslate:t,enabled:i}=s;if(!i)return;let a;s.previousTranslate=s.translate,s.isHorizontal()?s.translate=-e.scrollLeft:s.translate=-e.scrollTop,s.translate===0&&(s.translate=0),s.updateActiveIndex(),s.updateSlidesClasses();let r=s.maxTranslate()-s.minTranslate();a=r===0?0:(s.translate-s.minTranslate())/r,a!==s.progress&&s.updateProgress(t?-s.translate:s.translate),s.emit("setTranslate",s.translate,!1)}function At(s){let e=this;U(e,s.target),e.params.cssMode||e.params.slidesPerView!=="auto"&&!e.params.autoHeight||e.update()}function Ot(){let s=this;s.documentTouchHandlerProceeded||(s.documentTouchHandlerProceeded=!0,s.params.touchReleaseOnEdges&&(s.el.style.touchAction="auto"))}var Pe=(s,e)=>{let t=N(),{params:i,el:a,wrapperEl:r,device:o}=s,n=!!i.nested,l=e==="on"?"addEventListener":"removeEventListener",c=e;a&&typeof a!="string"&&(t[l]("touchstart",s.onDocumentTouchStart,{passive:!1,capture:n}),a[l]("touchstart",s.onTouchStart,{passive:!1}),a[l]("pointerdown",s.onTouchStart,{passive:!1}),t[l]("touchmove",s.onTouchMove,{passive:!1,capture:n}),t[l]("pointermove",s.onTouchMove,{passive:!1,capture:n}),t[l]("touchend",s.onTouchEnd,{passive:!0}),t[l]("pointerup",s.onTouchEnd,{passive:!0}),t[l]("pointercancel",s.onTouchEnd,{passive:!0}),t[l]("touchcancel",s.onTouchEnd,{passive:!0}),t[l]("pointerout",s.onTouchEnd,{passive:!0}),t[l]("pointerleave",s.onTouchEnd,{passive:!0}),t[l]("contextmenu",s.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&a[l]("click",s.onClick,!0),i.cssMode&&r[l]("scroll",s.onScroll),i.updateOnWindowResize?s[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",Te,!0):s[c]("observerUpdate",Te,!0),a[l]("load",s.onLoad,{capture:!0}))};function zt(){let s=this,{params:e}=s;s.onTouchStart=Mt.bind(s),s.onTouchMove=Pt.bind(s),s.onTouchEnd=Lt.bind(s),s.onDocumentTouchStart=Ot.bind(s),e.cssMode&&(s.onScroll=It.bind(s)),s.onClick=kt.bind(s),s.onLoad=At.bind(s),Pe(s,"on")}function Dt(){Pe(this,"off")}var Gt={attachEvents:zt,detachEvents:Dt},ye=(s,e)=>s.grid&&e.grid&&e.grid.rows>1;function $t(){let s=this,{realIndex:e,initialized:t,params:i,el:a}=s,r=i.breakpoints;if(!r||r&&Object.keys(r).length===0)return;let o=s.getBreakpoint(r,s.params.breakpointsBase,s.el);if(!o||s.currentBreakpoint===o)return;let n=(o in r?r[o]:void 0)||s.originalParams,l=ye(s,i),c=ye(s,n),u=s.params.grabCursor,h=n.grabCursor,g=i.enabled;l&&!c?(a.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),s.emitContainerClasses()):!l&&c&&(a.classList.add(`${i.containerModifierClass}grid`),(n.grid.fill&&n.grid.fill==="column"||!n.grid.fill&&i.grid.fill==="column")&&a.classList.add(`${i.containerModifierClass}grid-column`),s.emitContainerClasses()),u&&!h?s.unsetGrabCursor():!u&&h&&s.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(v=>{if(n[v]===void 0)return;let b=i[v]&&i[v].enabled,w=n[v]&&n[v].enabled;b&&!w&&s[v].disable(),!b&&w&&s[v].enable()});let m=n.direction&&n.direction!==i.direction,f=i.loop&&(n.slidesPerView!==i.slidesPerView||m),S=i.loop;m&&t&&s.changeDirection(),z(s.params,n);let d=s.params.enabled,p=s.params.loop;Object.assign(s,{allowTouchMove:s.params.allowTouchMove,allowSlideNext:s.params.allowSlideNext,allowSlidePrev:s.params.allowSlidePrev}),g&&!d?s.disable():!g&&d&&s.enable(),s.currentBreakpoint=o,s.emit("_beforeBreakpoint",n),t&&(f?(s.loopDestroy(),s.loopCreate(e),s.updateSlides()):!S&&p?(s.loopCreate(e),s.updateSlides()):S&&!p&&s.loopDestroy()),s.emit("breakpoint",n)}function Bt(s,e,t){if(e===void 0&&(e="window"),!s||e==="container"&&!t)return;let i=!1,a=O(),r=e==="window"?a.innerHeight:t.clientHeight,o=Object.keys(s).map(n=>{if(typeof n=="string"&&n.indexOf("@")===0){let l=parseFloat(n.substr(1));return{value:r*l,point:n}}return{value:n,point:n}});o.sort((n,l)=>parseInt(n.value,10)-parseInt(l.value,10));for(let n=0;n{typeof i=="object"?Object.keys(i).forEach(a=>{i[a]&&t.push(e+a)}):typeof i=="string"&&t.push(e+i)}),t}function Ft(){let s=this,{classNames:e,params:t,rtl:i,el:a,device:r}=s,o=_t(["initialized",t.direction,{"free-mode":s.params.freeMode&&t.freeMode.enabled},{autoheight:t.autoHeight},{rtl:i},{grid:t.grid&&t.grid.rows>1},{"grid-column":t.grid&&t.grid.rows>1&&t.grid.fill==="column"},{android:r.android},{ios:r.ios},{"css-mode":t.cssMode},{centered:t.cssMode&&t.centeredSlides},{"watch-progress":t.watchSlidesProgress}],t.containerModifierClass);e.push(...o),a.classList.add(...e),s.emitContainerClasses()}function Vt(){let{el:s,classNames:e}=this;s&&typeof s!="string"&&(s.classList.remove(...e),this.emitContainerClasses())}var Ht={addClasses:Ft,removeClasses:Vt};function Rt(){let s=this,{isLocked:e,params:t}=s,{slidesOffsetBefore:i}=t;if(i){let a=s.slides.length-1,r=s.slidesGrid[a]+s.slidesSizesGrid[a]+2*i;s.isLocked=s.size>r}else s.isLocked=s.snapGrid.length===1;t.allowSlideNext===!0&&(s.allowSlideNext=!s.isLocked),t.allowSlidePrev===!0&&(s.allowSlidePrev=!s.isLocked),e&&e!==s.isLocked&&(s.isEnd=!1),e!==s.isLocked&&s.emit(s.isLocked?"lock":"unlock")}var jt={checkOverflow:Rt},xe={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function qt(s,e){return function(t){t===void 0&&(t={});let i=Object.keys(t)[0],a=t[i];typeof a=="object"&&a!==null?(s[i]===!0&&(s[i]={enabled:!0}),i==="navigation"&&s[i]&&s[i].enabled&&!s[i].prevEl&&!s[i].nextEl&&(s[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&s[i]&&s[i].enabled&&!s[i].el&&(s[i].auto=!0),i in s&&"enabled"in a?(typeof s[i]!="object"||"enabled"in s[i]||(s[i].enabled=!0),s[i]||(s[i]={enabled:!1}),z(e,t)):z(e,t)):z(e,t)}}var re={eventsEmitter:He,update:Ze,translate:at,transition:dt,slide:vt,loop:Tt,grabCursor:Et,events:Gt,breakpoints:Nt,checkOverflow:jt,classes:Ht},ae={},B=class s{constructor(){let e,t;for(var i=arguments.length,a=new Array(i),r=0;r1){let u=[];return o.querySelectorAll(t.el).forEach(h=>{let g=z({},t,{el:h});u.push(new s(g))}),u}let n=this;n.__swiper__=!0,n.support=Ee(),n.device=Ce({userAgent:t.userAgent}),n.browser=_e(),n.eventsListeners={},n.eventsAnyListeners=[],n.modules=[...n.__modules__],t.modules&&Array.isArray(t.modules)&&n.modules.push(...t.modules);let l={};n.modules.forEach(u=>{u({params:t,swiper:n,extendParams:qt(t,l),on:n.on.bind(n),once:n.once.bind(n),off:n.off.bind(n),emit:n.emit.bind(n)})});let c=z({},xe,l);return n.params=z({},c,ae,t),n.originalParams=z({},n.params),n.passedParams=z({},t),n.params&&n.params.on&&Object.keys(n.params.on).forEach(u=>{n.on(u,n.params.on[u])}),n.params&&n.params.onAny&&n.onAny(n.params.onAny),Object.assign(n,{enabled:n.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>n.params.direction==="horizontal",isVertical:()=>n.params.direction==="vertical",activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:n.params.allowSlideNext,allowSlidePrev:n.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:n.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:n.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),n.emit("_swiper"),n.params.init&&n.init(),n}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){let{slidesEl:t,params:i}=this,a=D(t,`.${i.slideClass}, swiper-slide`),r=F(a[0]);return F(e)-r}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter(t=>1*t.getAttribute("data-swiper-slide-index")===e)[0])}recalcSlides(){let{slidesEl:e,params:t}=this;this.slides=D(e,`.${t.slideClass}, swiper-slide`)}enable(){let e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){let e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){let i=this;e=Math.min(Math.max(e,0),1);let a=i.minTranslate(),r=(i.maxTranslate()-a)*e+a;i.translateTo(r,t===void 0?0:t),i.updateActiveIndex(),i.updateSlidesClasses()}emitContainerClasses(){let e=this;if(!e.params._emitClasses||!e.el)return;let t=e.el.className.split(" ").filter(i=>i.indexOf("swiper")===0||i.indexOf(e.params.containerModifierClass)===0);e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){let t=this;return t.destroyed?"":e.className.split(" ").filter(i=>i.indexOf("swiper-slide")===0||i.indexOf(t.params.slideClass)===0).join(" ")}emitSlidesClasses(){let e=this;if(!e.params._emitClasses||!e.el)return;let t=[];e.slides.forEach(i=>{let a=e.getSlideClasses(i);t.push({slideEl:i,classNames:a}),e.emit("_slideClass",i,a)}),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){e===void 0&&(e="current"),t===void 0&&(t=!1);let{params:i,slides:a,slidesGrid:r,slidesSizesGrid:o,size:n,activeIndex:l}=this,c=1;if(typeof i.slidesPerView=="number")return i.slidesPerView;if(i.centeredSlides){let u,h=a[l]?Math.ceil(a[l].swiperSlideSize):0;for(let g=l+1;gn&&(u=!0));for(let g=l-1;g>=0;g-=1)a[g]&&!u&&(h+=a[g].swiperSlideSize,c+=1,h>n&&(u=!0))}else if(e==="current")for(let u=l+1;u=0;u-=1)r[l]-r[u]{o.complete&&U(e,o)}),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),i.freeMode&&i.freeMode.enabled&&!i.cssMode)a(),i.autoHeight&&e.updateAutoHeight();else{if((i.slidesPerView==="auto"||i.slidesPerView>1)&&e.isEnd&&!i.centeredSlides){let o=e.virtual&&i.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(o.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||a()}i.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){t===void 0&&(t=!0);let i=this,a=i.params.direction;return e||(e=a==="horizontal"?"vertical":"horizontal"),e===a||e!=="horizontal"&&e!=="vertical"||(i.el.classList.remove(`${i.params.containerModifierClass}${a}`),i.el.classList.add(`${i.params.containerModifierClass}${e}`),i.emitContainerClasses(),i.params.direction=e,i.slides.forEach(r=>{e==="vertical"?r.style.width="":r.style.height=""}),i.emit("changeDirection"),t&&i.update()),i}changeLanguageDirection(e){let t=this;t.rtl&&e==="rtl"||!t.rtl&&e==="ltr"||(t.rtl=e==="rtl",t.rtlTranslate=t.params.direction==="horizontal"&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){let t=this;if(t.mounted)return!0;let i=e||t.params.el;if(typeof i=="string"&&(i=document.querySelector(i)),!i)return!1;i.swiper=t,i.parentNode&&i.parentNode.host&&i.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);let a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`,r=i&&i.shadowRoot&&i.shadowRoot.querySelector?i.shadowRoot.querySelector(a()):D(i,a())[0];return!r&&t.params.createElements&&(r=_("div",t.params.wrapperClass),i.append(r),D(i,`.${t.params.slideClass}`).forEach(o=>{r.append(o)})),Object.assign(t,{el:i,wrapperEl:r,slidesEl:t.isElement&&!i.parentNode.host.slideSlots?i.parentNode.host:r,hostEl:t.isElement?i.parentNode.host:i,mounted:!0,rtl:i.dir.toLowerCase()==="rtl"||$(i,"direction")==="rtl",rtlTranslate:t.params.direction==="horizontal"&&(i.dir.toLowerCase()==="rtl"||$(i,"direction")==="rtl"),wrongRTL:$(r,"display")==="-webkit-box"}),!0}init(e){let t=this;if(t.initialized||t.mount(e)===!1)return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();let i=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&i.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),i.forEach(a=>{a.complete?U(t,a):a.addEventListener("load",r=>{U(t,r.target)})}),ne(t),t.initialized=!0,ne(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){e===void 0&&(e=!0),t===void 0&&(t=!0);let i=this,{params:a,el:r,wrapperEl:o,slides:n}=i;return i.params===void 0||i.destroyed||(i.emit("beforeDestroy"),i.initialized=!1,i.detachEvents(),a.loop&&i.loopDestroy(),t&&(i.removeClasses(),r&&typeof r!="string"&&r.removeAttribute("style"),o&&o.removeAttribute("style"),n&&n.length&&n.forEach(l=>{l.classList.remove(a.slideVisibleClass,a.slideFullyVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),l.removeAttribute("style"),l.removeAttribute("data-swiper-slide-index")})),i.emit("destroy"),Object.keys(i.eventsListeners).forEach(l=>{i.off(l)}),e!==!1&&(i.el&&typeof i.el!="string"&&(i.el.swiper=null),fe(i)),i.destroyed=!0),null}static extendDefaults(e){z(ae,e)}static get extendedDefaults(){return ae}static get defaults(){return xe}static installModule(e){s.prototype.__modules__||(s.prototype.__modules__=[]);let t=s.prototype.__modules__;typeof e=="function"&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach(t=>s.installModule(t)),s):(s.installModule(e),s)}};Object.keys(re).forEach(s=>{Object.keys(re[s]).forEach(e=>{B.prototype[e]=re[s][e]})}),B.use([Fe,Ve]);function K(s,e,t,i){return s.params.createElements&&Object.keys(i).forEach(a=>{if(!t[a]&&t.auto===!0){let r=D(s.el,`.${i[a]}`)[0];r||(r=_("div",i[a]),r.className=i[a],s.el.append(r)),t[a]=r,e[a]=r}}),t}function le(s){let{swiper:e,extendParams:t,on:i,emit:a}=s;function r(m){let f;return m&&typeof m=="string"&&e.isElement&&(f=e.el.querySelector(m),f)?f:(m&&(typeof m=="string"&&(f=[...document.querySelectorAll(m)]),e.params.uniqueNavElements&&typeof m=="string"&&f&&f.length>1&&e.el.querySelectorAll(m).length===1?f=e.el.querySelector(m):f&&f.length===1&&(f=f[0])),m&&!f?m:f)}function o(m,f){let S=e.params.navigation;(m=k(m)).forEach(d=>{d&&(d.classList[f?"add":"remove"](...S.disabledClass.split(" ")),d.tagName==="BUTTON"&&(d.disabled=f),e.params.watchOverflow&&e.enabled&&d.classList[e.isLocked?"add":"remove"](S.lockClass))})}function n(){let{nextEl:m,prevEl:f}=e.navigation;if(e.params.loop)return o(f,!1),void o(m,!1);o(f,e.isBeginning&&!e.params.rewind),o(m,e.isEnd&&!e.params.rewind)}function l(m){m.preventDefault(),(!e.isBeginning||e.params.loop||e.params.rewind)&&(e.slidePrev(),a("navigationPrev"))}function c(m){m.preventDefault(),(!e.isEnd||e.params.loop||e.params.rewind)&&(e.slideNext(),a("navigationNext"))}function u(){let m=e.params.navigation;if(e.params.navigation=K(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!m.nextEl&&!m.prevEl)return;let f=r(m.nextEl),S=r(m.prevEl);Object.assign(e.navigation,{nextEl:f,prevEl:S}),f=k(f),S=k(S);let d=(p,v)=>{p&&p.addEventListener("click",v==="next"?c:l),!e.enabled&&p&&p.classList.add(...m.lockClass.split(" "))};f.forEach(p=>d(p,"next")),S.forEach(p=>d(p,"prev"))}function h(){let{nextEl:m,prevEl:f}=e.navigation;m=k(m),f=k(f);let S=(d,p)=>{d.removeEventListener("click",p==="next"?c:l),d.classList.remove(...e.params.navigation.disabledClass.split(" "))};m.forEach(d=>S(d,"next")),f.forEach(d=>S(d,"prev"))}t({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,prevEl:null},i("init",()=>{e.params.navigation.enabled===!1?g():(u(),n())}),i("toEdge fromEdge lock unlock",()=>{n()}),i("destroy",()=>{h()}),i("enable disable",()=>{let{nextEl:m,prevEl:f}=e.navigation;m=k(m),f=k(f),e.enabled?n():[...m,...f].filter(S=>!!S).forEach(S=>S.classList.add(e.params.navigation.lockClass))}),i("click",(m,f)=>{let{nextEl:S,prevEl:d}=e.navigation;S=k(S),d=k(d);let p=f.target,v=d.includes(p)||S.includes(p);if(e.isElement&&!v){let b=f.path||f.composedPath&&f.composedPath();b&&(v=b.find(w=>S.includes(w)||d.includes(w)))}if(e.params.navigation.hideOnClick&&!v){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===p||e.pagination.el.contains(p)))return;let b;S.length?b=S[0].classList.contains(e.params.navigation.hiddenClass):d.length&&(b=d[0].classList.contains(e.params.navigation.hiddenClass)),a(b===!0?"navigationShow":"navigationHide"),[...S,...d].filter(w=>!!w).forEach(w=>w.classList.toggle(e.params.navigation.hiddenClass))}});let g=()=>{e.el.classList.add(...e.params.navigation.navigationDisabledClass.split(" ")),h()};Object.assign(e.navigation,{enable:()=>{e.el.classList.remove(...e.params.navigation.navigationDisabledClass.split(" ")),u(),n()},disable:g,update:n,init:u,destroy:h})}function V(s){return s===void 0&&(s=""),`.${s.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function oe(s){let{swiper:e,extendParams:t,on:i,emit:a}=s,r="swiper-pagination",o;t({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:d=>d,formatFractionTotal:d=>d,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),e.pagination={el:null,bullets:[]};let n=0;function l(){return!e.params.pagination.el||!e.pagination.el||Array.isArray(e.pagination.el)&&e.pagination.el.length===0}function c(d,p){let{bulletActiveClass:v}=e.params.pagination;d&&(d=d[(p==="prev"?"previous":"next")+"ElementSibling"])&&(d.classList.add(`${v}-${p}`),(d=d[(p==="prev"?"previous":"next")+"ElementSibling"])&&d.classList.add(`${v}-${p}-${p}`))}function u(d){let p=d.target.closest(V(e.params.pagination.bulletClass));if(!p)return;d.preventDefault();let v=F(p)*e.params.slidesPerGroup;if(e.params.loop){if(e.realIndex===v)return;e.slideToLoop(v)}else e.slideTo(v)}function h(){let d=e.rtl,p=e.params.pagination;if(l())return;let v,b,w=e.pagination.el;w=k(w);let C=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,A=e.params.loop?Math.ceil(C/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(b=e.previousRealIndex||0,v=e.params.slidesPerGroup>1?Math.floor(e.realIndex/e.params.slidesPerGroup):e.realIndex):e.snapIndex!==void 0?(v=e.snapIndex,b=e.previousSnapIndex):(b=e.previousIndex||0,v=e.activeIndex||0),p.type==="bullets"&&e.pagination.bullets&&e.pagination.bullets.length>0){let P=e.pagination.bullets,M,L,x;if(p.dynamicBullets&&(o=q(P[0],e.isHorizontal()?"width":"height",!0),w.forEach(y=>{y.style[e.isHorizontal()?"width":"height"]=o*(p.dynamicMainBullets+4)+"px"}),p.dynamicMainBullets>1&&b!==void 0&&(n+=v-(b||0),n>p.dynamicMainBullets-1?n=p.dynamicMainBullets-1:n<0&&(n=0)),M=Math.max(v-n,0),L=M+(Math.min(P.length,p.dynamicMainBullets)-1),x=(L+M)/2),P.forEach(y=>{let T=[...["","-next","-next-next","-prev","-prev-prev","-main"].map(E=>`${p.bulletActiveClass}${E}`)].map(E=>typeof E=="string"&&E.includes(" ")?E.split(" "):E).flat();y.classList.remove(...T)}),w.length>1)P.forEach(y=>{let T=F(y);T===v?y.classList.add(...p.bulletActiveClass.split(" ")):e.isElement&&y.setAttribute("part","bullet"),p.dynamicBullets&&(T>=M&&T<=L&&y.classList.add(...`${p.bulletActiveClass}-main`.split(" ")),T===M&&c(y,"prev"),T===L&&c(y,"next"))});else{let y=P[v];if(y&&y.classList.add(...p.bulletActiveClass.split(" ")),e.isElement&&P.forEach((T,E)=>{T.setAttribute("part",E===v?"bullet-active":"bullet")}),p.dynamicBullets){let T=P[M],E=P[L];for(let I=M;I<=L;I+=1)P[I]&&P[I].classList.add(...`${p.bulletActiveClass}-main`.split(" "));c(T,"prev"),c(E,"next")}}if(p.dynamicBullets){let y=Math.min(P.length,p.dynamicMainBullets+4),T=(o*y-o)/2-x*o,E=d?"right":"left";P.forEach(I=>{I.style[e.isHorizontal()?E:"top"]=`${T}px`})}}w.forEach((P,M)=>{if(p.type==="fraction"&&(P.querySelectorAll(V(p.currentClass)).forEach(L=>{L.textContent=p.formatFractionCurrent(v+1)}),P.querySelectorAll(V(p.totalClass)).forEach(L=>{L.textContent=p.formatFractionTotal(A)})),p.type==="progressbar"){let L;L=p.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";let x=(v+1)/A,y=1,T=1;L==="horizontal"?y=x:T=x,P.querySelectorAll(V(p.progressbarFillClass)).forEach(E=>{E.style.transform=`translate3d(0,0,0) scaleX(${y}) scaleY(${T})`,E.style.transitionDuration=`${e.params.speed}ms`})}p.type==="custom"&&p.renderCustom?(P.innerHTML=p.renderCustom(e,v+1,A),M===0&&a("paginationRender",P)):(M===0&&a("paginationRender",P),a("paginationUpdate",P)),e.params.watchOverflow&&e.enabled&&P.classList[e.isLocked?"add":"remove"](p.lockClass)})}function g(){let d=e.params.pagination;if(l())return;let p=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.grid&&e.params.grid.rows>1?e.slides.length/Math.ceil(e.params.grid.rows):e.slides.length,v=e.pagination.el;v=k(v);let b="";if(d.type==="bullets"){let w=e.params.loop?Math.ceil(p/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&w>p&&(w=p);for(let C=0;C`}d.type==="fraction"&&(b=d.renderFraction?d.renderFraction.call(e,d.currentClass,d.totalClass):` / `),d.type==="progressbar"&&(b=d.renderProgressbar?d.renderProgressbar.call(e,d.progressbarFillClass):``),e.pagination.bullets=[],v.forEach(w=>{d.type!=="custom"&&(w.innerHTML=b||""),d.type==="bullets"&&e.pagination.bullets.push(...w.querySelectorAll(V(d.bulletClass)))}),d.type!=="custom"&&a("paginationRender",v[0])}function m(){e.params.pagination=K(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});let d=e.params.pagination;if(!d.el)return;let p;typeof d.el=="string"&&e.isElement&&(p=e.el.querySelector(d.el)),p||typeof d.el!="string"||(p=[...document.querySelectorAll(d.el)]),p||(p=d.el),p&&p.length!==0&&(e.params.uniqueNavElements&&typeof d.el=="string"&&Array.isArray(p)&&p.length>1&&(p=[...e.el.querySelectorAll(d.el)],p.length>1&&(p=p.filter(v=>X(v,".swiper")[0]===e.el)[0])),Array.isArray(p)&&p.length===1&&(p=p[0]),Object.assign(e.pagination,{el:p}),p=k(p),p.forEach(v=>{d.type==="bullets"&&d.clickable&&v.classList.add(...(d.clickableClass||"").split(" ")),v.classList.add(d.modifierClass+d.type),v.classList.add(e.isHorizontal()?d.horizontalClass:d.verticalClass),d.type==="bullets"&&d.dynamicBullets&&(v.classList.add(`${d.modifierClass}${d.type}-dynamic`),n=0,d.dynamicMainBullets<1&&(d.dynamicMainBullets=1)),d.type==="progressbar"&&d.progressbarOpposite&&v.classList.add(d.progressbarOppositeClass),d.clickable&&v.addEventListener("click",u),e.enabled||v.classList.add(d.lockClass)}))}function f(){let d=e.params.pagination;if(l())return;let p=e.pagination.el;p&&(p=k(p),p.forEach(v=>{v.classList.remove(d.hiddenClass),v.classList.remove(d.modifierClass+d.type),v.classList.remove(e.isHorizontal()?d.horizontalClass:d.verticalClass),d.clickable&&(v.classList.remove(...(d.clickableClass||"").split(" ")),v.removeEventListener("click",u))})),e.pagination.bullets&&e.pagination.bullets.forEach(v=>v.classList.remove(...d.bulletActiveClass.split(" ")))}i("changeDirection",()=>{if(!e.pagination||!e.pagination.el)return;let d=e.params.pagination,{el:p}=e.pagination;p=k(p),p.forEach(v=>{v.classList.remove(d.horizontalClass,d.verticalClass),v.classList.add(e.isHorizontal()?d.horizontalClass:d.verticalClass)})}),i("init",()=>{e.params.pagination.enabled===!1?S():(m(),g(),h())}),i("activeIndexChange",()=>{e.snapIndex===void 0&&h()}),i("snapIndexChange",()=>{h()}),i("snapGridLengthChange",()=>{g(),h()}),i("destroy",()=>{f()}),i("enable disable",()=>{let{el:d}=e.pagination;d&&(d=k(d),d.forEach(p=>p.classList[e.enabled?"remove":"add"](e.params.pagination.lockClass)))}),i("lock unlock",()=>{h()}),i("click",(d,p)=>{let v=p.target,b=k(e.pagination.el);if(e.params.pagination.el&&e.params.pagination.hideOnClick&&b&&b.length>0&&!v.classList.contains(e.params.pagination.bulletClass)){if(e.navigation&&(e.navigation.nextEl&&v===e.navigation.nextEl||e.navigation.prevEl&&v===e.navigation.prevEl))return;let w=b[0].classList.contains(e.params.pagination.hiddenClass);a(w===!0?"paginationShow":"paginationHide"),b.forEach(C=>C.classList.toggle(e.params.pagination.hiddenClass))}});let S=()=>{e.el.classList.add(e.params.pagination.paginationDisabledClass);let{el:d}=e.pagination;d&&(d=k(d),d.forEach(p=>p.classList.add(e.params.pagination.paginationDisabledClass))),f()};Object.assign(e.pagination,{enable:()=>{e.el.classList.remove(e.params.pagination.paginationDisabledClass);let{el:d}=e.pagination;d&&(d=k(d),d.forEach(p=>p.classList.remove(e.params.pagination.paginationDisabledClass))),m(),g(),h()},disable:S,render:g,update:h,init:m,destroy:f})}var ms=()=>{new B(".swiper--juri",{modules:[le,oe],width:260,loop:!0,speed:500,spaceBetween:40,navigation:{nextEl:".swiper-button-next--juri",prevEl:".swiper-button-prev--juri"},breakpoints:{768:{width:560,slidesPerView:2},1366:{width:1160,slidesPerView:4,allowTouchMove:!1}}})},fs=()=>{new B(".swiper--reviews",{modules:[le,oe],width:240,speed:800,spaceBetween:40,navigation:{nextEl:".swiper-button-next--reviews",prevEl:".swiper-button-prev--reviews"},breakpoints:{768:{width:500,slidesPerView:1},1366:{width:560,slidesPerView:1,allowTouchMove:!1}}})};export{ms as initJuriSwiper,fs as initReviewsSwiper}; diff --git a/docs/styles/normalize.css b/docs/styles/normalize.css new file mode 100644 index 0000000..8a28a24 --- /dev/null +++ b/docs/styles/normalize.css @@ -0,0 +1 @@ +html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}main{display:block}h1{margin:.67em 0;font-size:2em}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:#0000}abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner{border-style:none;padding:0}[type=button]::-moz-focus-inner{border-style:none;padding:0}[type=reset]::-moz-focus-inner{border-style:none;padding:0}[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring{outline:1px dotted buttontext}[type=button]:-moz-focusring{outline:1px dotted buttontext}[type=reset]:-moz-focusring{outline:1px dotted buttontext}[type=submit]:-moz-focusring{outline:1px dotted buttontext}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;white-space:normal;max-width:100%;padding:0;display:table}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button{height:auto}[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}details{display:block}summary{display:list-item}template,[hidden]{display:none} \ No newline at end of file diff --git a/docs/styles/styles.css b/docs/styles/styles.css new file mode 100644 index 0000000..31dc5ed --- /dev/null +++ b/docs/styles/styles.css @@ -0,0 +1 @@ +@import "../vendor/swiper-bundle/swiper.css";@import "../vendor/swiper-bundle/modules/navigation.css";html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}main{display:block}h1{margin:.67em 0;font-size:2em}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:#0000}abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner{border-style:none;padding:0}[type=button]::-moz-focus-inner{border-style:none;padding:0}[type=reset]::-moz-focus-inner{border-style:none;padding:0}[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring{outline:1px dotted buttontext}[type=button]:-moz-focusring{outline:1px dotted buttontext}[type=reset]:-moz-focusring{outline:1px dotted buttontext}[type=submit]:-moz-focusring{outline:1px dotted buttontext}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;white-space:normal;max-width:100%;padding:0;display:table}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button{height:auto}[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}details{display:block}summary{display:list-item}template,[hidden]{display:none}.swiper--reviews{display:flex}.swiper-slide.swiper-slide--reviews{flex-grow:1;height:auto;display:flex}.swiper-button-next.swiper-button-next--juri,.swiper-button-prev.swiper-button-prev--juri,.swiper-button-prev.swiper-button-prev--reviews,.swiper-button-next.swiper-button-next--reviews{display:none}@media (width>=768px){.swiper-button-next.swiper-button-next--juri,.swiper-button-prev.swiper-button-prev--juri,.swiper-button-prev.swiper-button-prev--reviews,.swiper-button-next.swiper-button-next--reviews{color:#102654;margin:0;display:block;top:calc(50% - 26px)}.swiper-button-next.swiper-button-next--juri:after,.swiper-button-prev.swiper-button-prev--juri:after,.swiper-button-prev.swiper-button-prev--reviews:after,.swiper-button-next.swiper-button-next--reviews:after{font-size:34px}}@media (width>=1366px){.swiper-button-next.swiper-button-next--juri,.swiper-button-prev.swiper-button-prev--juri,.swiper-button-prev.swiper-button-prev--reviews,.swiper-button-next.swiper-button-next--reviews{top:calc(50% - 26px)}}@media (width>=768px){.swiper-button-prev.swiper-button-prev--juri{left:-70px}.swiper-button-next.swiper-button-next--juri{right:-70px}}@media (width>=1366px){.swiper-button-next.swiper-button-next--juri{right:-72px}}.swiper-slide--juri{position:relative}.swiper-button-prev.swiper-button-prev--juri,.swiper-button-next.swiper-button-next--juri,.swiper-button-prev.swiper-button-prev--reviews,.swiper-button-next.swiper-button-next--reviews{box-sizing:border-box;width:50px;height:50px}.swiper-button-prev.swiper-button-prev--juri:hover,.swiper-button-next.swiper-button-next--juri:hover,.swiper-button-prev.swiper-button-prev--reviews:hover,.swiper-button-next.swiper-button-next--reviews:hover{border:1px solid #102654;border-radius:50%}.swiper-button-prev.swiper-button-prev--juri:focus-visible,.swiper-button-next.swiper-button-next--juri:focus-visible,.swiper-button-prev.swiper-button-prev--reviews:focus-visible,.swiper-button-next.swiper-button-next--reviews:focus-visible{background-color:#e8e8e8;border:1px solid #102654;border-radius:50%}.swiper-button-prev.swiper-button-prev--juri:active,.swiper-button-next.swiper-button-next--juri:active,.swiper-button-prev.swiper-button-prev--reviews:active,.swiper-button-next.swiper-button-next--reviews:active{background-color:#102654}.swiper-button-prev.swiper-button-prev--juri:active:after,.swiper-button-next.swiper-button-next--juri:active:after,.swiper-button-prev.swiper-button-prev--reviews:active:after,.swiper-button-next.swiper-button-next--reviews:active:after{background-color:#fff}.swiper-button-prev.swiper-button-prev--juri:after,.swiper-button-next.swiper-button-next--juri:after,.swiper-button-prev.swiper-button-prev--reviews:after,.swiper-button-next.swiper-button-next--reviews:after{content:"";background-color:#102654;width:18px;height:33px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-mask-image:url(../icons/stack.svg#swiper-arrow);mask-image:url(../icons/stack.svg#swiper-arrow);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.swiper-button-next.swiper-button-next--juri:after,.swiper-button-next.swiper-button-next--reviews:after{transform:translate(-50%,-50%)rotate(180deg)}.swiper-button-disabled{opacity:.3;pointer-events:none}.swiper-button-next.swiper-button-next--reviews{top:49%;right:-106px}@media (width>=768px){.swiper-button-next.swiper-button-next--reviews{top:40%}}@media (width>=1366px){.swiper-button-next.swiper-button-next--reviews{top:40%;right:-121px}}.swiper-button-prev.swiper-button-prev--reviews{top:49%;left:-106px}@media (width>=768px){.swiper-button-prev.swiper-button-prev--reviews{top:40%}}@media (width>=1366px){.swiper-button-prev.swiper-button-prev--reviews{top:40%;left:-121px}}@font-face{font-family:Alumni Sans;font-weight:600;font-style:normal;font-display:swap;src:url(../fonts/alumni-sans-semi-bold.woff2)format("woff2")}@font-face{font-family:Alumni Sans;font-weight:800;font-style:normal;font-display:swap;src:url(../fonts/alumni-sans-extra-bold.woff2)format("woff2")}@font-face{font-family:Roboto Condensed;font-weight:400;font-style:normal;font-display:swap;src:url(../fonts/roboto-condensed-regular.woff2)format("woff2")}@font-face{font-family:Roboto Condensed;font-weight:300;font-style:normal;font-display:swap;src:url(../fonts/roboto-condensed-light.woff2)format("woff2")}@font-face{font-family:Roboto Condensed;font-weight:700;font-style:normal;font-display:swap;src:url(../fonts/roboto-condensed-bold.woff2)format("woff2")}html{height:100%}body{box-sizing:border-box;color:#102654;min-width:320px;margin:0;padding:0;font-size:16px;line-height:24px}.visually-hidden{clip:rect(0 0 0 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.page-body{flex-direction:column;height:100%;display:flex}.page-body__main{flex-grow:1}.button{color:#fff;cursor:pointer;text-transform:uppercase;background-color:#0000;border:none;font:700 12px/12px Roboto Condensed,Arial,sans-serif;display:block}.page-main__hero{width:100%}.main-wrapper{box-sizing:border-box;width:320px;margin:0 auto}@media (width>=768px){.main-wrapper{width:768px;padding:0 45px}}@media (width>=1366px){.main-wrapper{width:1366px;padding:0 103px}}.hero{background-image:linear-gradient(90deg,#1c3477 0%,#1a3578 39%,#73184b 76%,#b4022a 100%)}.hero__wrapper{padding:0 15px 32px}@media (width>=768px){.hero__wrapper{padding:0 45px 100px}}@media (width>=1366px){.hero__wrapper{padding:0 103px 120px}}.hero__header{flex-wrap:wrap;justify-content:space-between;align-items:center;margin-bottom:49px;display:flex}@media (width>=768px){.hero__header{margin-bottom:0}}@media (width>=1366px){.hero__header{margin-bottom:28px}}.hero__logo{vertical-align:bottom;margin:0;padding:16px 15px 18px 0}@media (width>=768px){.hero__logo{padding:31px 15px 31px 0}}.hero__phone{color:#fff;padding:13px 0 15px;font:700 22px/22px Roboto Condensed,Arial,sans-serif;text-decoration:none;display:block;position:relative}@media (width>=768px){.hero__phone{padding:30px 0;font:700 24px/24px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.hero__phone{padding-top:31px;font:700 26px/26px Roboto Condensed,Arial,sans-serif}}.hero__phone:hover{color:#1c337480}.hero__phone:focus-visible{color:#1c3374;outline:none}.hero__phone:active{color:#1c3374}.hero__phone:active:after{content:"";background-color:#102654;width:100%;height:2px;position:absolute;bottom:30%;left:0}.hero__phone:disabled{color:#f8f9fc}@media (width>=768px){.hero__content-wrapper{justify-content:space-between;display:flex}}@media (width>=1366px){.hero__content-wrapper{justify-content:flex-end;gap:56px}}@media (width>=768px){.hero__info-wrapper{max-width:324px}}@media (width>=1366px){.hero__info-wrapper{max-width:385px}}.hero__text-wrapper{justify-content:space-between;margin-bottom:46px;display:flex}@media (width>=768px){.hero__text-wrapper{gap:26px;margin-top:32px;margin-bottom:49px}}@media (width>=1366px){.hero__text-wrapper{gap:0;margin-top:52px;margin-bottom:38px}}.hero__subtitle{text-align:end;color:#fff;align-self:flex-end;max-width:113px;margin:0;font:400 14px/20px Roboto Condensed,Arial,sans-serif;display:block}@media (width>=768px){.hero__subtitle{margin-bottom:25px;font:400 14px/22px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.hero__subtitle{margin-bottom:72px}}.hero__title{text-transform:uppercase;text-align:end;color:#fff;letter-spacing:1px;max-width:156px;margin:0;font:800 62px/62px Alumni Sans,PT Sans,serif;display:block}@media (width>=768px){.hero__title{letter-spacing:1.6px;max-width:185px;font:800 72px/85px Alumni Sans,PT Sans,serif}}@media (width>=1366px){.hero__title{letter-spacing:4px;max-width:270px;font:800 92px/110px Alumni Sans,PT Sans,serif}}.hero__title-city{text-transform:none;letter-spacing:0;margin-bottom:14px;font:600 32px/32px Alumni Sans,PT Sans,serif;display:block}@media (width>=768px){.hero__title-city{margin-bottom:10px;font:600 42px/42px Alumni Sans,PT Sans,serif}}@media (width>=1366px){.hero__title-city{margin-bottom:42px;font:600 54px/54px Alumni Sans,PT Sans,serif}}.hero__button{box-sizing:border-box;text-align:center;border:2px solid #fff;width:290px;padding:23px 22px 22px;font:700 12px/12px Roboto Condensed,Arial,sans-serif;text-decoration:none;display:block}@media (width>=768px){.hero__button{width:185px;max-width:185px;margin-left:auto;padding-top:20px;padding-bottom:20px}}@media (width>=1366px){.hero__button{width:270px;max-width:270px;padding-top:26px;padding-bottom:24px}}.hero__button:hover{color:#103aae;background-color:#fff}.hero__button:focus-visible{color:#103aae;background-color:#fffc;border:2px solid #000;outline:none}.hero__button:active{color:#102654;background-color:#fff;outline:none}.hero__button--disabled{cursor:default;color:#fff;opacity:.5;pointer-events:none;background-color:#0000}.hero__coach-image-wrapper{display:none}@media (width>=768px){.hero__coach-image-wrapper{display:block}}.hero__image-coach{vertical-align:bottom;background-color:#2a3166;min-width:324px;min-height:390px}@media (width>=1366px){.hero__image-coach{min-width:500px;min-height:524px;margin-right:72px;display:block}}.about-us__wrapper{padding-top:40px;padding-bottom:40px}@media (width>=768px){.about-us__wrapper{padding-top:60px;padding-bottom:84px}}@media (width>=1366px){.about-us__wrapper{padding-top:120px;padding-bottom:204px;display:flex}.about-us__text-wrapper{max-width:355px;margin-right:145px}}.about-us__wrapper p{color:#102654;margin:0 15px 34px;font:300 14px/22px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.about-us__wrapper p{text-align:center;max-width:502px;margin:0 auto 36px;font:300 16px/24px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.about-us__wrapper p{text-align:start;max-width:355px;margin:0 auto 9px;font:300 16px/24px Roboto Condensed,Arial,sans-serif}}.about-us__wrapper p:nth-of-type(3){display:none}@media (width>=1366px){.about-us__wrapper p:nth-of-type(3){display:block}}.about-us__title{color:#102654;margin:0 15px 12px;font:600 32px/32px Alumni Sans,PT Sans,serif}@media (width>=768px){.about-us__title{text-align:center;margin:0 0 20px;font:600 42px/42px Alumni Sans,PT Sans,serif}}@media (width>=1366px){.about-us__title{text-align:start;margin-bottom:26px;font:600 54px/54px Alumni Sans,PT Sans,serif}}.about-us__wrapper .about-us__subtitle{color:#102654;margin:0 15px 38px;font:400 18px/20px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.about-us__wrapper .about-us__subtitle{text-align:center;margin:0 auto 36px;font:400 20px/20px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.about-us__wrapper .about-us__subtitle{text-align:start;margin:0 auto 94px;font:400 22px/22px Roboto Condensed,Arial,sans-serif}}.about-us__media-wrapper{position:relative}.about-us__image{background-color:#d9dbe7;margin-bottom:36px;display:block}.about-us__link{background-color:#7c8fb4;width:320px;height:170px;display:block;position:relative}@media (width>=768px){.about-us__link{width:270px;height:170px;position:absolute;bottom:-85px;left:50%;transform:translate(-50%)}}@media (width>=1366px){.about-us__link{width:360px;height:230px;top:285px;left:80px}}.about-us__video{border:none;width:320px;height:170px;margin:0;position:absolute;top:0}@media (width>=768px){.about-us__video{width:270px;height:170px}}@media (width>=1366px){.about-us__video{width:360px;height:230px}}.about-us__play-button{border:2px solid #ed023333;border-radius:50%;width:68px;height:68px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.about-us__play-button:after{content:"";background-image:linear-gradient(-80deg,#003eb7 0%,#ed0233 80% 100%);border-radius:50%;width:52px;height:52px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.about-us__play-button:before{content:"";z-index:1;background-color:#fff;width:10px;height:11px;position:absolute;top:50%;left:52%;transform:translate(-50%,-50%);-webkit-mask-image:url(../icons/stack.svg#button-play-triangle);mask-image:url(../icons/stack.svg#button-play-triangle)}@media (width>=1366px){.about-us__play-button{width:96px;height:96px}.about-us__play-button:after{width:72px;height:72px}.about-us__play-button:before{width:15px;height:15px;top:49%;left:53%;-webkit-mask-size:15px 15px;mask-size:15px 15px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}}.about-us__link:hover .about-us__play-button{border-color:#10265499}.about-us__link:hover .about-us__play-button:after{background-color:#fff;background-image:none}.about-us__link:hover .about-us__play-button:before{background-color:#10265499}.about-us__link:focus-visible .about-us__play-button{border-color:#102654;outline:none}.about-us__link:focus-visible .about-us__play-button:after{background-color:#c8c9cc;background-image:none}.about-us__link:focus-visible .about-us__play-button:before{background-color:#102654}.about-us__link:active .about-us__play-button{border-color:#102654;outline:none}.about-us__link:active .about-us__play-button:after{background-color:#fff;background-image:none;width:58px;height:58px}.about-us__link:active .about-us__play-button:before{background-color:#102654}.about-us__link--disabled{cursor:default;pointer-events:none}.about-us__link--disabled .about-us__play-button{cursor:default;opacity:.6;border-color:#102654}.about-us__link--disabled .about-us__play-button:after{background-color:#fff;background-image:none}.about-us__link--disabled .about-us__play-button:before{background-color:#102654}.about-us__video-preview{background-color:#8296bb;display:block}.abonements{background-color:#f8f9fc;position:relative}.abonements__wrapper{scroll-behavior:smooth;padding:41px 15px 39px}@media (width>=768px){.abonements__wrapper{padding-top:61px;padding-bottom:61px}.abonements__wrapper:after{content:"";background-image:-webkit-image-set(url(../images/abonements-bumper-disks-tablet@1x.webp) 1x type("image/webp"),url(../images/abonements-bumper-disks-tablet@2x.webp) 2x type("image/webp"),url(../images/abonements-bumper-disks-tablet@1x.png) 1x type("image/png"),url(../images/abonements-bumper-disks-tablet@2x.png) 2x type("image/png"));background-image:image-set("../images/abonements-bumper-disks-tablet@1x.webp" 1x type("image/webp"),"../images/abonements-bumper-disks-tablet@2x.webp" 2x type("image/webp"),"../images/abonements-bumper-disks-tablet@1x.png" 1x type("image/png"),"../images/abonements-bumper-disks-tablet@2x.png" 2x type("image/png"));width:324px;height:355px;display:block;position:absolute;bottom:32px;right:0;overflow:hidden}}@media (width>=1366px){.abonements__wrapper{padding-top:100px;padding-bottom:101px}.abonements__wrapper:after{background-image:-webkit-image-set(url(../images/abonements-bumper-disks-desktop@1x.webp) 1x type("image/webp"),url(../images/abonements-bumper-disks-desktop@2x.webp) 2x type("image/webp"),url(../images/abonements-bumper-disks-desktop@1x.png) 1x type("image/png"),url(../images/abonements-bumper-disks-desktop@2x.png) 2x type("image/png"));background-image:image-set("../images/abonements-bumper-disks-desktop@1x.webp" 1x type("image/webp"),"../images/abonements-bumper-disks-desktop@2x.webp" 2x type("image/webp"),"../images/abonements-bumper-disks-desktop@1x.png" 1x type("image/png"),"../images/abonements-bumper-disks-desktop@2x.png" 2x type("image/png"));width:303px;height:431px;bottom:16px}}.abonements__title{text-align:center;width:-moz-fit-content;width:fit-content;max-width:290px;margin:0 auto 21px;font:600 32px/32px Alumni Sans,PT Sans,serif}@media (width>=768px){.abonements__title{margin-bottom:26px;font:600 42px/42px Alumni Sans,PT Sans,serif}}@media (width>=1366px){.abonements__title{margin-bottom:11px;font:600 54px/54px Alumni Sans,PT Sans,serif}}.abonements__duration-list{justify-content:space-between;margin-top:0;margin-bottom:28px;margin-left:0;padding-left:0;list-style:none;display:flex;position:relative}.abonements__duration-list:after{content:"";background-color:#78787833;width:100%;height:2px;display:block;position:absolute;bottom:2px}@media (width>=768px){.abonements__duration-list{gap:44px;width:-moz-fit-content;width:fit-content;margin:0 auto 44px}}@media (width>=1366px){.abonements__duration-list{gap:51px;margin-bottom:39px}.abonements__duration-list:after{bottom:1px}}.abonements__duration-button{color:#102654b3;text-transform:none;padding:10px 0;font:400 16px/16px Roboto Condensed,Arial,sans-serif}.abonements__duration-button:hover{color:#102654e6;text-underline-offset:9px;-webkit-text-decoration:underline #787878;text-decoration:underline #787878;text-decoration-thickness:2px}@media (width>=1366px){.abonements__duration-button:hover{text-underline-offset:10px}}.abonements__duration-button:focus-visible{color:#102654;text-underline-offset:9px;outline:none;-webkit-text-decoration:underline #102654;text-decoration:underline #102654;text-decoration-thickness:2px}@media (width>=1366px){.abonements__duration-button:focus-visible{text-underline-offset:10px}}.abonements__duration-button:active{color:#102654;text-underline-offset:9px;outline:none;-webkit-text-decoration:underline #ed0233;text-decoration:underline #ed0233;text-decoration-thickness:2px}@media (width>=1366px){.abonements__duration-button:active{text-underline-offset:10px}}.abonements__duration-button:disabled{opacity:.3;text-underline-offset:9px;pointer-events:none;-webkit-text-decoration:underline #102654;text-decoration:underline #102654;text-decoration-thickness:2px}@media (width>=1366px){.abonements__duration-button:disabled{text-underline-offset:10px}}@media (width>=768px){.abonements__duration-button{font:400 18px/18px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.abonements__duration-button{font:400 20px/20px Roboto Condensed,Arial,sans-serif}}.abonements__duration-button--active{color:#102654;text-underline-offset:9px;pointer-events:none;-webkit-text-decoration:underline #d10a42;text-decoration:underline #d10a42;text-decoration-thickness:2px}@media (width>=1366px){.abonements__duration-button--active{text-underline-offset:10px}}.abonements__type-list{flex-direction:column;gap:34px;margin-top:0;margin-bottom:0;margin-left:0;padding-left:0;list-style:none;display:flex}@media (width>=768px){.abonements__type-list{z-index:2;gap:41px;width:380px;margin:0 auto;position:relative}}@media (width>=1366px){.abonements__type-list{flex-flow:wrap;gap:40px;width:1160px}}.abonements__type-item{background-color:#fff;padding:51px 42px;position:relative}@media (width>=768px){.abonements__type-item{padding:64px 65px 65px}}@media (width>=1366px){.abonements__type-item{box-sizing:border-box;width:360px;padding-top:65px}}.abonements__type-title{color:#102654;text-align:center;margin-top:0;margin-bottom:18px;font:700 22px/22px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.abonements__type-title{margin-bottom:22px;font:700 24px/24px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.abonements__type-title{margin-bottom:18px;font:700 26px/26px Roboto Condensed,Arial,sans-serif}}.abonements__type-description{text-align:center;margin-top:0;margin-bottom:22px;font:300 14px/22px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.abonements__type-description{font:300 16px/24px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.abonements__type-description{margin-bottom:18px}}.abonements__cost-wrapper{justify-content:center;align-items:flex-end;min-height:114px;margin-bottom:19px;display:flex;position:relative}@media (width>=768px){.abonements__cost-wrapper{min-height:150px;margin-bottom:22px}}@media (width>=1366px){.abonements__cost-wrapper{min-height:148px;margin-bottom:17px}}.abonements__cost-background{color:#e8e8e880;margin:0;font:700 80px/150% Roboto Condensed,Arial,sans-serif;position:absolute;top:-6px}@media (width>=768px){.abonements__cost-background{font:700 100px/150% Roboto Condensed,Arial,sans-serif;top:-1px}}.abonements__cost-current{color:#103aae;z-index:2;align-items:center;margin:0;font:700 48px/150% Roboto Condensed,Arial,sans-serif;display:flex;position:relative}.abonements__cost-current:after{content:"";background-image:url(../icons/stack.svg#abonements-rub);width:24px;height:33px;margin-left:10px;display:inline-block}@media (width>=768px){.abonements__cost-current{font:700 60px/150% Roboto Condensed,Arial,sans-serif}.abonements__cost-current:after{width:30px;height:42px;margin-left:14px}}.abonements__type-link{color:#102654;text-align:center;box-sizing:border-box;border:2px solid #102654;width:206px;padding:25px;font:700 12px/12px Roboto Condensed,Arial,sans-serif;text-decoration:none;display:block}.abonements__type-link:hover{color:#fff;background-image:linear-gradient(-80deg,#003eb7 0%,#ed0233 80% 100%);border:none}.abonements__type-link:focus-visible{color:#fff;background-image:linear-gradient(-80deg,#003eb7cc 0%,#ed0233cc 80% 100%)}.abonements__type-link:active{color:#ffffffb3;background-image:linear-gradient(-80deg,#003eb7 0%,#ed0233 80% 100%);border:none}.abonements__type-link:focus-visible:after,.abonements__type-link:active:after,.abonements__type-link:hover:after{box-sizing:border-box;content:"";border-style:solid;border-width:7px;border-image:linear-gradient(-80deg,#003eb7 0%,#ed0233 80% 100%) 1;width:100%;height:100%;display:block;position:absolute;top:0;left:0}@media (width>=768px){.abonements__type-link{width:250px;font:700 12px/12px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.abonements__type-link{width:230px}}.abonements__type-link--disabled{opacity:.3;pointer-events:none}.super-games__wrapper{padding:25px 15px}@media (width>=768px){.super-games__wrapper{padding:60px 45px;display:flex}}@media (width>=1366px){.super-games__wrapper{padding:101px 103px}}.super-games__container{background-color:#ed0233;padding:40px 39px 40px 40px}@media (width>=768px){.super-games__container{padding:40px 40px 38px}}@media (width>=1366px){.super-games__container{box-sizing:border-box;width:500px;padding:61px 80px}}.super-games__inner-container{justify-content:space-between;gap:9px;display:flex}@media (width>=768px){.super-games__inner-container{margin-bottom:9px}}@media (width>=1366px){.super-games__inner-container{margin-bottom:27px}}.super-games__title{color:#fff;margin:0;font:600 48px/54px Alumni Sans,PT Sans,serif}@media (width>=768px){.super-games__title{max-width:100px;font:600 48px/54px Alumni Sans,PT Sans,serif}}@media (width>=1366px){.super-games__title{max-width:168px;font:600 82px/96px Alumni Sans,PT Sans,serif}}@media (width>=768px){.super-games__date-time-container{width:100px;max-width:100px}}@media (width>=1366px){.super-games__date-time-container{width:95px;max-width:95px}}.super-games__date-container{margin-bottom:5px}@media (width>=768px){.super-games__date-container{margin-bottom:9px}}@media (width>=1366px){.super-games__date-container{margin-bottom:21px}}.super-games__date-container-title{color:#fff;margin-top:0;margin-bottom:5px;font:300 16px/20px Roboto Condensed,Arial,sans-serif;position:relative}.super-games__date-container-title:after{content:"";background-color:#fff;width:100%;height:1px;display:block;position:absolute;bottom:-3px}@media (width>=768px){.super-games__date-container-title{font:300 18px/24px Roboto Condensed,Arial,sans-serif}.super-games__date-container-title:after{bottom:-2px}}@media (width>=1366px){.super-games__date-container-title{margin-bottom:11px;font:300 18px/24px Roboto Condensed,Arial,sans-serif}.super-games__date-container-title:after{bottom:-5px}}.super-games__date-container-time-day{color:#fff;font:700 24px/24px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.super-games__date-container-time-day{font:700 24px/24px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.super-games__date-container-time-day{font:700 40px/40px Roboto Condensed,Arial,sans-serif}}.super-games__date-container-time-month{color:#fff;margin-left:5px;font-size:12px;font-weight:400;line-height:12px}@media (width>=768px){.super-games__date-container-time-month{max-width:40px;font:400 14px/22px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.super-games__date-container-time-month{font:400 14px/22px Roboto Condensed,Arial,sans-serif}}.super-games__date-container-time{color:#fff;font:700 24px/24px Roboto Condensed,Arial,sans-serif;display:flex}@media (width>=768px){.super-games__date-container-time{align-items:center}}@media (width>=1366px){.super-games__date-container-time{font:700 40px/40px Roboto Condensed,Arial,sans-serif}}.super-games__text{color:#fff;font:300 16px/20px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.super-games__text{margin-top:0;margin-bottom:10px;font:300 18px/24px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.super-games__text{margin-bottom:32px;font:300 18px/24px Roboto Condensed,Arial,sans-serif}}.super-games__link{color:#fff;text-align:center;border:2px solid #fff;padding:22px;font:700 12px/12px Roboto Condensed,Arial,sans-serif;text-decoration:none}.super-games__link:hover{color:#103aae;background-color:#fff}.super-games__link:focus-visible{color:#103aae;background-color:#fffc;border:2px solid #000;outline:none}.super-games__link:active{color:#102654;background-color:#fff;outline:none}@media (width>=768px){.super-games__link{padding:25px;font:700 12px/12px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.super-games__link{padding-top:26px;padding-bottom:24px}}.super-games__link--disabled{cursor:default;color:#fff;opacity:.5;pointer-events:none;background-color:#0000}.super-games__image{background-color:#000145;display:block}@media (width>=768px){.super-games__image{object-fit:cover}}@media (width>=1366px){.super-games__image{margin-top:-1px}}.juri__wrapper{padding:40px 30px}@media (width>=768px){.juri__wrapper{padding:30px 104px 60px}}@media (width>=1366px){.juri__wrapper{padding:99px 104px}}.juri__swiper-wrapper{position:relative}.juri__title{text-align:center;margin-top:0;margin-bottom:20px;font:600 32px/32px Alumni Sans,PT Sans,serif}@media (width>=768px){.juri__title{margin-bottom:46px;font:600 54px/54px Alumni Sans,PT Sans,serif}}.juri__image{background-color:#c4c7d6;display:block}@media (width>=1366px){.juri__image{height:301px}}.juri__card-more-info{color:#fff;box-sizing:border-box;transition-duration:.5s;transition-property:height background;width:100%;height:109px;margin-left:1px;padding-top:63px;position:absolute;bottom:0}.juri__card-more-title{text-align:center;width:100%;margin-top:0;margin-bottom:9px;margin-left:0;font:400 22px/22px Roboto Condensed,Arial,sans-serif;bottom:23px}.juri__more-sub-title{text-align:center;margin-top:0;margin-bottom:10px;font:300 16px/24px Roboto Condensed,Arial,sans-serif;display:none}.juri__more-list{width:144px;margin:0;padding-left:66px;list-style:none;display:none}.juri__more-item{max-width:144px;font:400 14px/22px Roboto Condensed,Arial,sans-serif;position:relative}.juri__more-item:after{content:"";background-color:#fff;border-radius:50%;width:6px;height:6px;display:block;position:absolute;top:50%;left:-16px;transform:translateY(-50%)}.juri__more-item:not(:last-child){margin-bottom:12px}@media (width>=1366px){.juri__card-more-wrapper:hover .juri__card-more-info,.juri__card-more-wrapper:focus-visible .juri__card-more-info{background-color:#102654e3;height:100%}.juri__card-more-wrapper:hover .juri__more-sub-title,.juri__card-more-wrapper:focus-visible .juri__more-sub-title,.juri__card-more-wrapper:hover .juri__more-list,.juri__card-more-wrapper:focus-visible .juri__more-list{display:block}}.benefits{background-color:#f8f9fc}.benefits__wrapper{padding:41px 0 39px}@media (width>=768px){.benefits__wrapper{padding:61px 45px}}@media (width>=1366px){.benefits__wrapper{padding:100px 103px 99px}}.benefits__title{text-align:center;margin-top:0;margin-bottom:40px;padding:0 15px;font:600 32px/32px Alumni Sans,PT Sans,serif}@media (width>=768px){.benefits__title{margin-bottom:49px;font:600 42px/42px Alumni Sans,PT Sans,serif}}@media (width>=1366px){.benefits__title{margin-bottom:51px;font:600 54px/54px Alumni Sans,PT Sans,serif}}.benefits__list{flex-direction:column;gap:35px;margin-top:0;margin-bottom:0;margin-left:0;padding-left:0;list-style:none;display:flex}@media (width>=768px){.benefits__list{flex-flow:wrap;gap:30px}}@media (width>=1366px){.benefits__list{grid-template-columns:360px 360px 360px;gap:80px 40px;display:grid}}.benefits__list li{padding:0 15px}@media (width>=768px){.benefits__list li{gap:15px;max-width:324px;padding:0;display:flex}}@media (width>=1366px){.benefits__list li{justify-content:space-between;max-width:360px;position:relative}.benefits__list li:first-child:after,.benefits__list li:nth-child(2):after{content:"";background-color:#d10a4233;width:100%;height:2px;position:absolute;bottom:-40px}.benefits__list li div:nth-child(2){max-width:210px}}.benefits__list li:nth-child(3){background-color:#1c3374;margin:4px 0 6px;padding:30px 15px 39px}@media (width>=768px){.benefits__list li:nth-child(3){margin:10px 179px;padding:35px;display:block}}@media (width>=1366px){.benefits__list li:nth-child(3){grid-area:1/2/3/3;margin:auto 0;padding:57px 40px 58px}}.benefits__list strong{color:#0000;background:linear-gradient(-51deg,#0041ca 0% 50%,#d10a42 100%);-webkit-background-clip:text;background-clip:text;width:-moz-fit-content;width:fit-content;margin:0 auto;font:700 64px/64px Roboto Condensed,Arial,sans-serif;display:block}@media (width>=768px){.benefits__list strong{margin:0;font:700 70px/70px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.benefits__list strong{font:700 70px/70px Roboto Condensed,Arial,sans-serif}}.benefits__list li:nth-child(3) strong{color:#fff;margin-bottom:6px}@media (width>=768px){.benefits__list li:nth-child(3) strong{margin:0 auto 25px}}@media (width>=1366px){.benefits__list li:nth-child(3) strong{margin-bottom:10px}}.benefits__list small{color:#2e35ac;text-align:center;width:-moz-fit-content;width:fit-content;margin:0 auto 12px;font:400 14px/20px Roboto Condensed,Arial,sans-serif;display:block}@media (width>=768px){.benefits__list small{margin:0;font:400 14px/22px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.benefits__list small{font:400 14px/22px Roboto Condensed,Arial,sans-serif}}.benefits__list li:nth-child(3) h3{color:#fff;margin-bottom:20px;font:700 22px/22px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.benefits__list li:nth-child(3) h3{width:-moz-fit-content;width:fit-content;margin:0 auto 25px;font:700 24px/24px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.benefits__list li:nth-child(3) h3{margin-bottom:31px;font:700 26px/26px Roboto Condensed,Arial,sans-serif}}.benefits__list h3{text-align:center;max-width:240px;margin:0 auto 12px;font:400 18px/20px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.benefits__list h3{text-align:start;font:400 20px/20px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.benefits__list h3{margin-bottom:7px;font:400 22px/22px Roboto Condensed,Arial,sans-serif}}.benefits__list p{text-align:center;max-width:230px;margin:0 auto;font:300 14px/22px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.benefits__list p{text-align:start;max-width:none;font:300 16px/24px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.benefits__list p{font:300 16px/24px Roboto Condensed,Arial,sans-serif}}.benefits__list li:nth-child(3) p{color:#fff}@media (width>=768px){.benefits__list li:nth-child(3) p{text-align:center;width:-moz-fit-content;width:fit-content;max-width:250px;margin:0 auto}}@media (width>=1366px){.benefits__list li:nth-child(3) p{max-width:280px;font:300 16px/24px Roboto Condensed,Arial,sans-serif}}.offers__wrapper{padding-top:40px;padding-bottom:40px}@media (width>=768px){.offers__wrapper{padding-top:61px;padding-bottom:58px}}@media (width>=1366px){.offers__wrapper{padding-top:100px;padding-bottom:100px}.offers__semi-wrapper{gap:40px;display:flex}}.offers__title{text-align:center;width:-moz-fit-content;width:fit-content;margin:0 auto 40px;font:600 32px/32px Alumni Sans,PT Sans,serif}@media (width>=768px){.offers__title{margin-bottom:34px;font:600 42px/42px Alumni Sans,PT Sans,serif}}@media (width>=1366px){.offers__title{margin-bottom:70px;font:600 54px/54px Alumni Sans,PT Sans,serif}}.offers__price-wrapper{margin-bottom:40px}@media (width>=768px){.offers__price-wrapper{margin-bottom:35px;display:flex}}@media (width>=1366px){.offers__price-wrapper{margin-bottom:0}}.offers__price-wrapper div{background-color:#ed0233;padding:30px 30px 28px}@media (width>=768px){.offers__price-wrapper div{flex-direction:column;padding:40px 25px 38px;display:flex}}@media (width>=1366px){.offers__price-wrapper div{box-sizing:border-box;width:280px;padding:40px 45px 35px}}.offers__price-wrapper small{color:#fff;text-align:center;margin-bottom:9px;font:700 22px/22px Roboto Condensed,Arial,sans-serif;display:block}@media (width>=768px){.offers__price-wrapper small{text-align:start;margin-bottom:20px;font:700 24px/24px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.offers__price-wrapper small{font:700 26px/26px Roboto Condensed,Arial,sans-serif}}.offers__price-wrapper strong{color:#fff;text-align:center;margin-bottom:28px;font:700 64px/64px Roboto Condensed,Arial,sans-serif;display:block}@media (width>=768px){.offers__price-wrapper strong{text-align:start;margin-bottom:40px;font:700 70px/70px Roboto Condensed,Arial,sans-serif}}.offers__price-wrapper p{color:#fff;text-align:center;margin-top:0;margin-bottom:29px;font:300 16px/20px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.offers__price-wrapper p{text-align:start;font:300 18px/24px Roboto Condensed,Arial,sans-serif}}.offers__price-link{color:#fff;text-transform:uppercase;text-align:center;text-underline-offset:7px;width:-moz-fit-content;width:fit-content;margin:-10px auto 0;padding-top:10px;padding-bottom:7px;font:700 14px/14px Roboto Condensed,Arial,sans-serif;-webkit-text-decoration:underline #fff;text-decoration:underline #fff;text-decoration-thickness:1px;display:block}.offers__price-link:hover{opacity:.8}.offers__price-link:focus-visible{outline:1px solid #fff;text-decoration:none}.offers__price-link:active{opacity:1;text-underline-offset:7px;-webkit-text-decoration:underline #fff;text-decoration:underline #fff;text-decoration-thickness:1px}@media (width>=768px){.offers__price-link{align-self:flex-start;margin:auto 0 0}}@media (width>=1366px){.offers__price-link{box-sizing:border-box;margin-left:-10px;padding:10px}}.offers__price-link--disabled{opacity:.5;pointer-events:none}.offers__price-image{object-fit:cover;background-color:#426ddd;height:100%;display:block}@media (width>=1366px){.offers__benefits-wrapper{display:flex}}.offers__list{flex-direction:column;gap:30px;margin:0 15px;padding-left:0;list-style:none;display:flex}@media (width>=768px){.offers__list{flex-direction:row;margin:0}}@media (width>=1366px){.offers__list{flex-direction:column;flex-grow:1;align-self:flex-end}}.offers__item{border:7px solid;border-image:linear-gradient(-51deg,#00359f 0%,#d10a42 100%) 1;padding:21px 20px 25px}@media (width>=768px){.offers__item{box-sizing:border-box;flex-direction:column;width:324px;min-height:188px;padding-top:20px;display:flex}}@media (width>=1366px){.offers__item{width:560px;min-height:174px;padding-top:21px}}.offers__item h3{text-align:center;margin-top:0;margin-bottom:20px;font:700 22px/22px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.offers__item h3{text-align:start;margin-bottom:10px;font:700 26px/26px Roboto Condensed,Arial,sans-serif}}.offers__item p{text-align:center;margin-top:0;margin-bottom:20px;font:300 14px/22px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.offers__item p{text-align:start;font:300 16px/24px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.offers__item p{margin-bottom:10px}}.offers__item-link{text-align:center;color:#1c3374;text-underline-offset:7px;width:-moz-fit-content;width:fit-content;margin:-10px auto;padding:10px;font:700 14px/14px Roboto Condensed,Arial,sans-serif;-webkit-text-decoration:underline #74819c;text-decoration:underline #74819c;text-decoration-thickness:1px}.offers__item-link:hover{opacity:.8;-webkit-text-decoration:underline #1c3374;text-decoration:underline #1c3374;text-decoration-thickness:1px}.offers__item-link:focus-visible{outline:1px solid #1c3374;text-decoration:none}.offers__item-link:active{opacity:1;text-underline-offset:7px;-webkit-text-decoration:underline #102654;text-decoration:underline #102654;text-decoration-thickness:1px}@media (width>=768px){.offers__item-link{text-align:start;margin-top:auto;margin-left:-10px;font:700 14px/14px Roboto Condensed,Arial,sans-serif;display:block}}.offers__item-link--disabled{opacity:.3;pointer-events:none}.faq{background-color:#f8f9fc}.faq__wrapper{padding:71px 15px}@media (width>=768px){.faq__wrapper{padding:61px 45px 60px}}@media (width>=1366px){.faq__wrapper{padding:100px 103px}}.faq__title{text-align:center;margin-top:0;margin-bottom:34px;font:600 32px/32px Alumni Sans,PT Sans,serif}@media (width>=768px){.faq__title{margin-bottom:44px;font:600 42px/42px Alumni Sans,PT Sans,serif}}@media (width>=1366px){.faq__title{text-align:start;margin-bottom:50px;font:600 54px/54px Alumni Sans,PT Sans,serif}.faq__container{align-items:flex-start;gap:40px;display:flex}}.faq__button-list{flex-wrap:wrap;gap:10px;margin-top:0;margin-bottom:35px;margin-left:0;padding-left:0;list-style:none;display:flex}@media (width>=768px){.faq__button-list{margin-bottom:45px}}@media (width>=1366px){.faq__button-list{width:260px;margin:0}}.faq__button{color:#102654;box-sizing:border-box;text-transform:none;border:1px solid #10265433;width:140px;min-height:46px;padding:14px 20px;font:400 16px/16px Roboto Condensed,Arial,sans-serif}.faq__button:hover,.faq__button:focus-visible{border-color:#102654;outline:none}.faq__button:active{color:#fff;background-image:linear-gradient(-80deg,#003eb7 0%,#ed0233 80% 100%);border:none}.faq__button:disabled{color:#c8c9cc;pointer-events:none}@media (width>=768px){.faq__button{width:162px;min-height:54px;padding:17px 20px;font:400 18px/18px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.faq__button{width:260px;padding-top:18px;padding-bottom:16px}}.faq__button--active{color:#fff;pointer-events:none;background-image:linear-gradient(-80deg,#003eb7 0%,#ed0233 80% 100%);border:none}.faq__info-list{margin-top:0;margin-bottom:0;margin-left:0;padding-left:0;list-style:none}@media (width>=1366px){.faq__info-list{flex-grow:1}}.faq__info-item{border-top:1px solid #74819c;padding-top:20px;padding-bottom:20px}.faq__info-item:last-of-type{border-bottom:1px solid #74819c}@media (width>=768px){.faq__info-item{padding-top:23px;padding-bottom:23px}}@media (width>=1366px){.faq__info-item{padding-bottom:22px}}.faq__info-item div{justify-content:space-between;align-items:center;transition-property:margin-bottom;transition-duration:1s;display:flex}.faq__info-item--active div{margin-bottom:20px}@media (width>=768px){.faq__info-item--active div{margin-bottom:10px}}@media (width>=1366px){.faq__info-item--active div{margin-bottom:22px}}.faq__info-item h3{max-width:238px;margin:0;font:400 20px/20px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.faq__info-item h3{max-width:500px;font:400 22px/22px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.faq__info-item h3{max-width:660px;font:400 24px/24px Roboto Condensed,Arial,sans-serif}}.faq__info-item button{background-color:#fff;border:1px solid #1c3374;border-radius:50%;width:30px;height:30px;position:relative}.faq__info-item button:after{content:"";box-sizing:border-box;background-color:#1c3374;width:14px;height:2px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.faq__info-item button:before{content:"";box-sizing:border-box;background-color:#1c3374;width:2px;height:14px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.faq__info-item button:hover{background-color:#1c3374}.faq__info-item button:hover:after,.faq__info-item button:hover:before{background-color:#fff}.faq__info-item button:focus-visible{background-color:#74819c;outline:none}.faq__info-item button:focus-visible:after,.faq__info-item button:focus-visible:before{background-color:#fff}.faq__info-item button:active{opacity:.5}.faq__info-item button:disabled{pointer-events:none;opacity:.3}@media (width>=768px){.faq__info-item button{width:40px;height:40px}.faq__info-item button:after{width:20px}.faq__info-item button:before{height:20px}}.faq__info-item--active button{background-color:#1c3374}.faq__info-item--active button:after{background-color:#fff}.faq__info-item--active button:before{content:none}.faq__info-item p{max-width:238px;min-height:0;max-height:0;margin:0;font:300 16px/20px Roboto Condensed,Arial,sans-serif;transition-property:all;transition-duration:1s;overflow:hidden}@media (width>=768px){.faq__info-item p{max-width:560px;font:300 18px/24px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.faq__info-item p{max-width:660px}}.faq__info-item--active p{max-height:150px}.reviews__wrapper{padding:40px}@media (width>=768px){.reviews__wrapper{padding:60px 45px}}@media (width>=1366px){.reviews__wrapper{padding:100px 103px}}.reviews__swiper-container{position:relative}@media (width>=768px){.reviews__swiper-container{width:500px;margin:0 auto}}@media (width>=1366px){.reviews__swiper-container{width:560px}}.reviews__title{text-align:center;margin-top:0;margin-bottom:39px;font:600 32px/32px Alumni Sans,PT Sans,serif}@media (width>=768px){.reviews__title{margin-bottom:35px;font:600 54px/54px Alumni Sans,PT Sans,serif}}@media (width>=1366px){.reviews__title{margin-bottom:75px}}.reviews__slide-container{box-sizing:border-box;background-color:#1c3374;width:240px;max-width:240px;padding:30px 25px 18px;box-shadow:0 0 40px #1c337433}@media (width>=768px){.reviews__slide-container{gap:40px;width:500px;max-width:500px;min-height:242px;padding:40px 30px 30px;display:flex}}@media (width>=1366px){.reviews__slide-container{gap:30px;width:560px;max-width:560px;padding:60px 60px 51px}}.reviews__slide-container img{background-color:#56606d;border-radius:50%;margin:0 auto 10px;display:block}.reviews__slide-container h3{color:#fff;text-align:center;margin-top:0;font:400 18px/20px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.reviews__slide-container h3{text-align:start;max-width:250px;margin-bottom:20px;font:400 22px/22px Roboto Condensed,Arial,sans-serif}}.reviews__slide-container p{color:#fff;text-align:center;height:auto;margin-top:0;margin-bottom:10px;font:300 14px/22px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.reviews__slide-container p{text-align:start;max-width:320px;font:300 16px/24px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.reviews__slide-container p{max-width:330px}.form{background-image:linear-gradient(90deg,#102654 0% 50%,#fff 50% 100%);position:relative}.form:after{content:"";background-color:#74819c;width:50%;height:1px;display:block;position:absolute;top:0;left:50%}.form__main-wrapper{width:1366px;margin:0 auto;display:flex}}.form__form-container{background-color:#102654}@media (width>=1366px){.form__form-container{box-sizing:border-box;width:683px;margin:0}}.form__wrapper{background-color:#102654;padding:71px 15px 70px}@media (width>=768px){.form__wrapper{padding:60px 164px}}@media (width>=1366px){.form__wrapper{width:auto;max-width:none;padding:60px 103px 61px}}.form__title{color:#fff;margin-top:0;margin-bottom:33px;font:600 32px/32px Alumni Sans,PT Sans,serif}@media (width>=768px){.form__title{text-align:center;font:600 54px/54px Alumni Sans,PT Sans,serif}}@media (width>=1366px){.form__title{text-align:start;margin-bottom:34px}}@media (width>=768px){.form__input-wrapper{flex-wrap:wrap;gap:30px;margin-bottom:36px;display:flex}}@media (width>=1366px){.form__input-wrapper{margin-bottom:35px}}.form__input-container{width:100%;position:relative}@media (width>=768px){.form__input-container{width:205px}}@media (width>=1366px){.form__input-container{width:223px}}.form__input{color:#fff;background-color:#0000;border:none;border-bottom:1px solid #74819c;width:100%;margin-bottom:35px;padding:3px 0;font:300 14px/22px Roboto Condensed,Arial,sans-serif}.form__input:hover{border-bottom:1px solid #fff}.form__input:focus-visible{border-color:#0000;outline:1px solid #fff}.form__input:disabled{color:#fff6;border-bottom-color:#ffffff4d}.form__input::placeholder{color:#fff6}@media (width>=768px){.form__input{margin-bottom:0}}.form__wrong-message{display:none}.form__input--error{border-bottom-color:#ff121f}.form__input--error+.form__wrong-message{color:#ff121f;width:100%;display:block;position:absolute;bottom:9px;left:0}@media (width>=768px){.form__input--error+.form__wrong-message{bottom:-25px}}.form__button-container{width:100%;position:relative}.form__button-submit{text-align:center;border:2px solid #fff;width:100%;padding:22px;font:700 12px/12px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.form__button-submit{padding:26px 20px 24px;font:700 12px/12px Roboto Condensed,Arial,sans-serif}}.form__button-submit:hover{color:#103aae;background-color:#fff}.form__button-submit:focus-visible{color:#103aae;background-color:#fffc;border:2px solid #000;outline:none}.form__button-submit:active{color:#102654;background-color:#fff;outline:none}.form__button-submit:disabled{cursor:default;color:#fff;opacity:.5;pointer-events:none;background-color:#0000}.form__congratulation-message{color:#03fc2c;text-align:center;width:100%;display:none;position:absolute;bottom:-30px;left:50%;transform:translate(-50%)}.form__button-submit--sent+.form__congratulation-message{display:block}.form__contacts-container{box-sizing:border-box;width:320px;margin:0 auto;padding:37px 15px 39px}@media (width>=768px){.form__contacts-container{width:768px;padding:60px 164px}}@media (width>=1366px){.form__contacts-container{width:683px;padding:60px 103px 69px}}.form__title--contacts{color:#102654;margin-bottom:37px}@media (width>=1366px){.form__title--contacts{margin-bottom:37px}}.form__contacts-list{flex-direction:column;gap:27px;margin-top:0;margin-bottom:0;margin-left:0;padding-left:0;list-style:none;display:flex}@media (width>=768px){.form__contacts-list{grid-template-columns:190px 190px;gap:16px 60px;display:grid;position:relative}.form__contacts-list:after{content:"";background-color:#74819c;width:1px;height:100%;display:block;position:absolute;left:50%}}@media (width>=1366px){.form__contacts-list{gap:14px 108px}}@media (width>=768px){.form__contacts-item:nth-child(2){grid-row:2/3}}.form__contacts-item-title{margin-top:0;margin-bottom:13px;font:400 20px/20px Roboto Condensed,Arial,sans-serif}@media (width>=768px){.form__contacts-item-title{margin-bottom:6px;font:400 24px/24px Roboto Condensed,Arial,sans-serif}}.form__contacts-item-description{margin-top:0;margin-bottom:0;font:400 14px/20px Roboto Condensed,Arial,sans-serif;display:block}@media (width>=1366px){.form__contacts-item-description{font:400 14px/22px Roboto Condensed,Arial,sans-serif}}.form__contacts-item-link{color:#102654;font:400 14px/20px Roboto Condensed,Arial,sans-serif;text-decoration:none;position:relative}.form__contacts-item-link:hover,.form__contacts-item-link:focus-visible{color:#1c337480}.form__contacts-item-link:active{color:#1c3374}.form__contacts-item-link:active:after{content:"";background-color:#102654;width:100%;height:2px;position:absolute;bottom:0;left:0}@media (width>=1366px){.form__contacts-item-link{font:400 14px/22px Roboto Condensed,Arial,sans-serif}}.form__contacts-item-link--disabled{opacity:.3;pointer-events:none}.form__contacts-address{font-style:normal}.page-footer{background-color:#030a1a}.page-footer__wrapper{padding:40px 15px}@media (width>=768px){.page-footer__wrapper{justify-content:space-between;padding:45px 45px 48px;display:flex}}@media (width>=1366px){.page-footer__wrapper{padding:40px 103px 41px}}.page-footer__wrapper picture{max-height:22px}.page-footer__logo{margin-bottom:31px;display:block}@media (width>=768px){.page-footer__logo{margin-bottom:0}}.page-footer__nave-list{flex-wrap:wrap;gap:20px 36px;margin-top:0;margin-bottom:28px;margin-left:0;padding-left:0;list-style:none;display:flex}@media (width>=768px){.page-footer__nave-list{column-gap:31px;max-width:393px;margin-bottom:0}}@media (width>=1366px){.page-footer__nave-list{column-gap:83px;max-width:601px}}.page-footer__nave-link{color:#fff;margin:-5px;padding:5px;font:400 14px/20px Roboto Condensed,Arial,sans-serif;text-decoration:none;display:block}.page-footer__nave-link:hover{border-bottom:1px solid #fff}.page-footer__nave-link:focus-visible{border:none;outline:1px solid #fff}.page-footer__nave-link:active{border:none}@media (width>=768px){.page-footer__nave-link{font:400 14px/22px Roboto Condensed,Arial,sans-serif}}@media (width>=1366px){.page-footer__nave-link{margin-top:-3px}}.page-footer__nave-link--disabled{pointer-events:none;opacity:.4}.page-footer__social-list{flex-wrap:wrap;gap:16px 20px;margin-top:0;margin-bottom:0;margin-left:0;padding-left:0;list-style:none;display:flex}@media (width>=768px){.page-footer__social-list{column-gap:15px}}@media (width>=1366px){.page-footer__social-list{column-gap:10px}}.page-footer__social-link{background-color:#fff;border-radius:50%;justify-content:center;align-items:center;width:25px;height:25px;display:flex}.page-footer__social-link:focus-visible{background-color:#103aae;outline:none}.page-footer__social-link:hover{background-color:#74819c}.page-footer__social-link:active{background-color:#102654}.page-footer__social-link:hover .page-footer__social-image,.page-footer__social-link:active .page-footer__social-image,.page-footer__social-link:focus-visible .page-footer__social-image{color:#fff}.page-footer__social-link--disabled{pointer-events:none;background-color:#ffffff4d}.page-footer__social-link--disabled .page-footer__social-image{color:#030a1a}.page-footer__social-image{color:#030a1a;display:block} \ No newline at end of file diff --git a/docs/styles/swiper.css b/docs/styles/swiper.css new file mode 100644 index 0000000..eff599f --- /dev/null +++ b/docs/styles/swiper.css @@ -0,0 +1 @@ +.swiper--reviews{display:flex}.swiper-slide.swiper-slide--reviews{flex-grow:1;height:auto;display:flex}.swiper-button-next.swiper-button-next--juri,.swiper-button-prev.swiper-button-prev--juri,.swiper-button-prev.swiper-button-prev--reviews,.swiper-button-next.swiper-button-next--reviews{display:none}@media (width>=768px){.swiper-button-next.swiper-button-next--juri,.swiper-button-prev.swiper-button-prev--juri,.swiper-button-prev.swiper-button-prev--reviews,.swiper-button-next.swiper-button-next--reviews{color:#102654;margin:0;display:block;top:calc(50% - 26px)}.swiper-button-next.swiper-button-next--juri:after,.swiper-button-prev.swiper-button-prev--juri:after,.swiper-button-prev.swiper-button-prev--reviews:after,.swiper-button-next.swiper-button-next--reviews:after{font-size:34px}}@media (width>=1366px){.swiper-button-next.swiper-button-next--juri,.swiper-button-prev.swiper-button-prev--juri,.swiper-button-prev.swiper-button-prev--reviews,.swiper-button-next.swiper-button-next--reviews{top:calc(50% - 26px)}}@media (width>=768px){.swiper-button-prev.swiper-button-prev--juri{left:-70px}.swiper-button-next.swiper-button-next--juri{right:-70px}}@media (width>=1366px){.swiper-button-next.swiper-button-next--juri{right:-72px}}.swiper-slide--juri{position:relative}.swiper-button-prev.swiper-button-prev--juri,.swiper-button-next.swiper-button-next--juri,.swiper-button-prev.swiper-button-prev--reviews,.swiper-button-next.swiper-button-next--reviews{box-sizing:border-box;width:50px;height:50px}.swiper-button-prev.swiper-button-prev--juri:hover,.swiper-button-next.swiper-button-next--juri:hover,.swiper-button-prev.swiper-button-prev--reviews:hover,.swiper-button-next.swiper-button-next--reviews:hover{border:1px solid #102654;border-radius:50%}.swiper-button-prev.swiper-button-prev--juri:focus-visible,.swiper-button-next.swiper-button-next--juri:focus-visible,.swiper-button-prev.swiper-button-prev--reviews:focus-visible,.swiper-button-next.swiper-button-next--reviews:focus-visible{background-color:#e8e8e8;border:1px solid #102654;border-radius:50%}.swiper-button-prev.swiper-button-prev--juri:active,.swiper-button-next.swiper-button-next--juri:active,.swiper-button-prev.swiper-button-prev--reviews:active,.swiper-button-next.swiper-button-next--reviews:active{background-color:#102654}.swiper-button-prev.swiper-button-prev--juri:active:after,.swiper-button-next.swiper-button-next--juri:active:after,.swiper-button-prev.swiper-button-prev--reviews:active:after,.swiper-button-next.swiper-button-next--reviews:active:after{background-color:#fff}.swiper-button-prev.swiper-button-prev--juri:after,.swiper-button-next.swiper-button-next--juri:after,.swiper-button-prev.swiper-button-prev--reviews:after,.swiper-button-next.swiper-button-next--reviews:after{content:"";background-color:#102654;width:18px;height:33px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-mask-image:url(../icons/stack.svg#swiper-arrow);mask-image:url(../icons/stack.svg#swiper-arrow);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.swiper-button-next.swiper-button-next--juri:after,.swiper-button-next.swiper-button-next--reviews:after{transform:translate(-50%,-50%)rotate(180deg)}.swiper-button-disabled{opacity:.3;pointer-events:none}.swiper-button-next.swiper-button-next--reviews{top:49%;right:-106px}@media (width>=768px){.swiper-button-next.swiper-button-next--reviews{top:40%}}@media (width>=1366px){.swiper-button-next.swiper-button-next--reviews{top:40%;right:-121px}}.swiper-button-prev.swiper-button-prev--reviews{top:49%;left:-106px}@media (width>=768px){.swiper-button-prev.swiper-button-prev--reviews{top:40%}}@media (width>=1366px){.swiper-button-prev.swiper-button-prev--reviews{top:40%;left:-121px}} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/LICENSE b/docs/vendor/swiper-bundle/LICENSE new file mode 100644 index 0000000..a7876ca --- /dev/null +++ b/docs/vendor/swiper-bundle/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2019 Vladimir Kharlampidi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/docs/vendor/swiper-bundle/modules/a11y-element.css b/docs/vendor/swiper-bundle/modules/a11y-element.css new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/a11y-element.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/docs/vendor/swiper-bundle/modules/a11y-element.min.css b/docs/vendor/swiper-bundle/modules/a11y-element.min.css new file mode 100644 index 0000000..78c39d5 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/a11y-element.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/a11y.css b/docs/vendor/swiper-bundle/modules/a11y.css new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/a11y.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/docs/vendor/swiper-bundle/modules/a11y.less b/docs/vendor/swiper-bundle/modules/a11y.less new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/a11y.less @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/docs/vendor/swiper-bundle/modules/a11y.min.css b/docs/vendor/swiper-bundle/modules/a11y.min.css new file mode 100644 index 0000000..78c39d5 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/a11y.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/a11y.min.mjs b/docs/vendor/swiper-bundle/modules/a11y.min.mjs new file mode 100644 index 0000000..05351d5 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/a11y.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElement,h as elementIndex,m as makeElementsArray}from"../shared/utils.min.mjs";function A11y(e){let{swiper:a,extendParams:t,on:n}=e;t({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null,scrollOnFocus:!0}}),a.a11y={clicked:!1};let i,s,r=null,l=(new Date).getTime();function o(e){const a=r;0!==a.length&&(a.innerHTML="",a.innerHTML=e)}function c(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function d(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function m(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("role",a)}))}function p(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-roledescription",a)}))}function g(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-label",a)}))}function u(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function E(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function f(e){if(13!==e.keyCode&&32!==e.keyCode)return;const t=a.params.a11y,n=e.target;if(!a.pagination||!a.pagination.el||n!==a.pagination.el&&!a.pagination.el.contains(e.target)||e.target.matches(classesToSelector(a.params.pagination.bulletClass))){if(a.navigation&&a.navigation.prevEl&&a.navigation.nextEl){const e=makeElementsArray(a.navigation.prevEl);makeElementsArray(a.navigation.nextEl).includes(n)&&(a.isEnd&&!a.params.loop||a.slideNext(),a.isEnd?o(t.lastSlideMessage):o(t.nextSlideMessage)),e.includes(n)&&(a.isBeginning&&!a.params.loop||a.slidePrev(),a.isBeginning?o(t.firstSlideMessage):o(t.prevSlideMessage))}a.pagination&&n.matches(classesToSelector(a.params.pagination.bulletClass))&&n.click()}}function v(){return a.pagination&&a.pagination.bullets&&a.pagination.bullets.length}function y(){return v()&&a.params.pagination.clickable}const b=(e,a,t)=>{c(e),"BUTTON"!==e.tagName&&(m(e,"button"),e.addEventListener("keydown",f)),g(e,t),function(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-controls",a)}))}(e,a)},h=e=>{s&&s!==e.target&&!s.contains(e.target)&&(i=!0),a.a11y.clicked=!0},A=()=>{i=!1,requestAnimationFrame((()=>{requestAnimationFrame((()=>{a.destroyed||(a.a11y.clicked=!1)}))}))},k=e=>{l=(new Date).getTime()},M=e=>{if(a.a11y.clicked||!a.params.a11y.scrollOnFocus)return;if((new Date).getTime()-l<100)return;const t=e.target.closest(`.${a.params.slideClass}, swiper-slide`);if(!t||!a.slides.includes(t))return;s=t;const n=a.slides.indexOf(t)===a.activeIndex,r=a.params.watchSlidesProgress&&a.visibleSlides&&a.visibleSlides.includes(t);n||r||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(a.isHorizontal()?a.el.scrollLeft=0:a.el.scrollTop=0,requestAnimationFrame((()=>{i||(a.params.loop?a.slideToLoop(parseInt(t.getAttribute("data-swiper-slide-index")),0):a.slideTo(a.slides.indexOf(t),0),i=!1)})))},x=()=>{const e=a.params.a11y;e.itemRoleDescriptionMessage&&p(a.slides,e.itemRoleDescriptionMessage),e.slideRole&&m(a.slides,e.slideRole);const t=a.slides.length;e.slideLabelMessage&&a.slides.forEach(((n,i)=>{const s=a.params.loop?parseInt(n.getAttribute("data-swiper-slide-index"),10):i;g(n,e.slideLabelMessage.replace(/\{\{index\}\}/,s+1).replace(/\{\{slidesLength\}\}/,t))}))},L=()=>{const e=a.params.a11y;a.el.append(r);const t=a.el;e.containerRoleDescriptionMessage&&p(t,e.containerRoleDescriptionMessage),e.containerMessage&&g(t,e.containerMessage);const n=a.wrapperEl,i=e.id||n.getAttribute("id")||`swiper-wrapper-${s=16,void 0===s&&(s=16),"x".repeat(s).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var s;const l=a.params.autoplay&&a.params.autoplay.enabled?"off":"polite";var o;o=i,makeElementsArray(n).forEach((e=>{e.setAttribute("id",o)})),function(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-live",a)}))}(n,l),x();let{nextEl:c,prevEl:d}=a.navigation?a.navigation:{};if(c=makeElementsArray(c),d=makeElementsArray(d),c&&c.forEach((a=>b(a,i,e.nextSlideMessage))),d&&d.forEach((a=>b(a,i,e.prevSlideMessage))),y()){makeElementsArray(a.pagination.el).forEach((e=>{e.addEventListener("keydown",f)}))}getDocument().addEventListener("visibilitychange",k),a.el.addEventListener("focus",M,!0),a.el.addEventListener("focus",M,!0),a.el.addEventListener("pointerdown",h,!0),a.el.addEventListener("pointerup",A,!0)};n("beforeInit",(()=>{r=createElement("span",a.params.a11y.notificationClass),r.setAttribute("aria-live","assertive"),r.setAttribute("aria-atomic","true")})),n("afterInit",(()=>{a.params.a11y.enabled&&L()})),n("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{a.params.a11y.enabled&&x()})),n("fromEdge toEdge afterInit lock unlock",(()=>{a.params.a11y.enabled&&function(){if(a.params.loop||a.params.rewind||!a.navigation)return;const{nextEl:e,prevEl:t}=a.navigation;t&&(a.isBeginning?(u(t),d(t)):(E(t),c(t))),e&&(a.isEnd?(u(e),d(e)):(E(e),c(e)))}()})),n("paginationUpdate",(()=>{a.params.a11y.enabled&&function(){const e=a.params.a11y;v()&&a.pagination.bullets.forEach((t=>{a.params.pagination.clickable&&(c(t),a.params.pagination.renderBullet||(m(t,"button"),g(t,e.paginationBulletMessage.replace(/\{\{index\}\}/,elementIndex(t)+1)))),t.matches(classesToSelector(a.params.pagination.bulletActiveClass))?t.setAttribute("aria-current","true"):t.removeAttribute("aria-current")}))}()})),n("destroy",(()=>{a.params.a11y.enabled&&function(){r&&r.remove();let{nextEl:e,prevEl:t}=a.navigation?a.navigation:{};e=makeElementsArray(e),t=makeElementsArray(t),e&&e.forEach((e=>e.removeEventListener("keydown",f))),t&&t.forEach((e=>e.removeEventListener("keydown",f))),y()&&makeElementsArray(a.pagination.el).forEach((e=>{e.removeEventListener("keydown",f)}));getDocument().removeEventListener("visibilitychange",k),a.el&&"string"!=typeof a.el&&(a.el.removeEventListener("focus",M,!0),a.el.removeEventListener("pointerdown",h,!0),a.el.removeEventListener("pointerup",A,!0))}()}))}export{A11y as default}; +//# sourceMappingURL=a11y.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/a11y.min.mjs.map b/docs/vendor/swiper-bundle/modules/a11y.min.mjs.map new file mode 100644 index 0000000..eff8e5e --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/a11y.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"a11y.mjs.mjs","names":["getDocument","classesToSelector","createElement","elementIndex","makeElementsArray","A11y","_ref","swiper","extendParams","on","a11y","enabled","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","id","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","Date","getTime","notify","message","notification","length","innerHTML","makeElFocusable","el","forEach","subEl","setAttribute","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","label","disableEl","enableEl","onEnterOrSpaceKey","e","keyCode","params","targetEl","target","pagination","contains","matches","bulletClass","navigation","prevEl","nextEl","prevEls","includes","isEnd","loop","slideNext","isBeginning","slidePrev","click","hasPagination","bullets","hasClickablePagination","clickable","initNavEl","wrapperId","tagName","addEventListener","controls","addElControls","handlePointerDown","handlePointerUp","requestAnimationFrame","destroyed","onVisibilityChange","handleFocus","slideEl","closest","slideClass","slides","isActive","indexOf","activeIndex","isVisible","watchSlidesProgress","visibleSlides","sourceCapabilities","firesTouchEvents","isHorizontal","scrollLeft","scrollTop","slideToLoop","parseInt","getAttribute","slideTo","initSlides","slidesLength","index","slideIndex","replace","init","append","containerEl","wrapperEl","size","repeat","Math","round","random","toString","live","autoplay","addElLive","rewind","updateNavigation","bulletEl","renderBullet","bulletActiveClass","removeAttribute","updatePagination","remove","removeEventListener","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/a11y.mjs b/docs/vendor/swiper-bundle/modules/a11y.mjs new file mode 100644 index 0000000..4e7c85b --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/a11y.mjs @@ -0,0 +1,374 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs'; + +function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null, + scrollOnFocus: true + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + let preventFocusHandler; + let focusTargetSlideEl; + let visibilityChangedTimestamp = new Date().getTime(); + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { + const prevEls = makeElementsArray(swiper.navigation.prevEl); + const nextEls = makeElementsArray(swiper.navigation.nextEl); + if (nextEls.includes(targetEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (prevEls.includes(targetEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = e => { + if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { + preventFocusHandler = true; + } + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + preventFocusHandler = false; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const onVisibilityChange = e => { + visibilityChangedTimestamp = new Date().getTime(); + }; + const handleFocus = e => { + if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; + if (new Date().getTime() - visibilityChangedTimestamp < 100) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + focusTargetSlideEl = slideEl; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + requestAnimationFrame(() => { + if (preventFocusHandler) return; + if (swiper.params.loop) { + swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); + } else { + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + } + preventFocusHandler = false; + }); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + // Tab focus + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); +} + +export { A11y as default }; diff --git a/docs/vendor/swiper-bundle/modules/a11y.scss b/docs/vendor/swiper-bundle/modules/a11y.scss new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/a11y.scss @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/docs/vendor/swiper-bundle/modules/autoplay-element.css b/docs/vendor/swiper-bundle/modules/autoplay-element.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/autoplay-element.min.css b/docs/vendor/swiper-bundle/modules/autoplay-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/autoplay.css b/docs/vendor/swiper-bundle/modules/autoplay.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/autoplay.less b/docs/vendor/swiper-bundle/modules/autoplay.less new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/autoplay.min.css b/docs/vendor/swiper-bundle/modules/autoplay.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/autoplay.min.mjs b/docs/vendor/swiper-bundle/modules/autoplay.min.mjs new file mode 100644 index 0000000..6c6047e --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/autoplay.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";function Autoplay(e){let a,t,{swiper:n,extendParams:i,on:r,emit:o,params:s}=e;n.autoplay={running:!1,paused:!1,timeLeft:0},i({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let l,p,u,d,y,m,c,g,v=s&&s.autoplay?s.autoplay.delay:3e3,T=s&&s.autoplay?s.autoplay.delay:3e3,f=(new Date).getTime();function w(e){n&&!n.destroyed&&n.wrapperEl&&e.target===n.wrapperEl&&(n.wrapperEl.removeEventListener("transitionend",w),g||e.detail&&e.detail.bySwiperTouchMove||S())}const b=()=>{if(n.destroyed||!n.autoplay.running)return;n.autoplay.paused?p=!0:p&&(T=l,p=!1);const e=n.autoplay.paused?l:f+T-(new Date).getTime();n.autoplay.timeLeft=e,o("autoplayTimeLeft",e,e/v),t=requestAnimationFrame((()=>{b()}))},E=e=>{if(n.destroyed||!n.autoplay.running)return;cancelAnimationFrame(t),b();let i=void 0===e?n.params.autoplay.delay:e;v=n.params.autoplay.delay,T=n.params.autoplay.delay;const r=(()=>{let e;if(e=n.virtual&&n.params.virtual.enabled?n.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:n.slides[n.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(i=r,v=r,T=r),l=i;const s=n.params.speed,p=()=>{n&&!n.destroyed&&(n.params.autoplay.reverseDirection?!n.isBeginning||n.params.loop||n.params.rewind?(n.slidePrev(s,!0,!0),o("autoplay")):n.params.autoplay.stopOnLastSlide||(n.slideTo(n.slides.length-1,s,!0,!0),o("autoplay")):!n.isEnd||n.params.loop||n.params.rewind?(n.slideNext(s,!0,!0),o("autoplay")):n.params.autoplay.stopOnLastSlide||(n.slideTo(0,s,!0,!0),o("autoplay")),n.params.cssMode&&(f=(new Date).getTime(),requestAnimationFrame((()=>{E()}))))};return i>0?(clearTimeout(a),a=setTimeout((()=>{p()}),i)):requestAnimationFrame((()=>{p()})),i},L=()=>{f=(new Date).getTime(),n.autoplay.running=!0,E(),o("autoplayStart")},D=()=>{n.autoplay.running=!1,clearTimeout(a),cancelAnimationFrame(t),o("autoplayStop")},O=(e,t)=>{if(n.destroyed||!n.autoplay.running)return;clearTimeout(a),e||(c=!0);const i=()=>{o("autoplayPause"),n.params.autoplay.waitForTransition?n.wrapperEl.addEventListener("transitionend",w):S()};if(n.autoplay.paused=!0,t)return m&&(l=n.params.autoplay.delay),m=!1,void i();const r=l||n.params.autoplay.delay;l=r-((new Date).getTime()-f),n.isEnd&&l<0&&!n.params.loop||(l<0&&(l=0),i())},S=()=>{n.isEnd&&l<0&&!n.params.loop||n.destroyed||!n.autoplay.running||(f=(new Date).getTime(),c?(c=!1,E(l)):E(),n.autoplay.paused=!1,o("autoplayResume"))},M=()=>{if(n.destroyed||!n.autoplay.running)return;const e=getDocument();"hidden"===e.visibilityState&&(c=!0,O(!0)),"visible"===e.visibilityState&&S()},h=e=>{"mouse"===e.pointerType&&(c=!0,g=!0,n.animating||n.autoplay.paused||O(!0))},A=e=>{"mouse"===e.pointerType&&(g=!1,n.autoplay.paused&&S())};r("init",(()=>{n.params.autoplay.enabled&&(n.params.autoplay.pauseOnMouseEnter&&(n.el.addEventListener("pointerenter",h),n.el.addEventListener("pointerleave",A)),getDocument().addEventListener("visibilitychange",M),L())})),r("destroy",(()=>{n.el&&"string"!=typeof n.el&&(n.el.removeEventListener("pointerenter",h),n.el.removeEventListener("pointerleave",A)),getDocument().removeEventListener("visibilitychange",M),n.autoplay.running&&D()})),r("_freeModeStaticRelease",(()=>{(d||c)&&S()})),r("_freeModeNoMomentumRelease",(()=>{n.params.autoplay.disableOnInteraction?D():O(!0,!0)})),r("beforeTransitionStart",((e,a,t)=>{!n.destroyed&&n.autoplay.running&&(t||!n.params.autoplay.disableOnInteraction?O(!0,!0):D())})),r("sliderFirstMove",(()=>{!n.destroyed&&n.autoplay.running&&(n.params.autoplay.disableOnInteraction?D():(u=!0,d=!1,c=!1,y=setTimeout((()=>{c=!0,d=!0,O(!0)}),200)))})),r("touchEnd",(()=>{if(!n.destroyed&&n.autoplay.running&&u){if(clearTimeout(y),clearTimeout(a),n.params.autoplay.disableOnInteraction)return d=!1,void(u=!1);d&&n.params.cssMode&&S(),d=!1,u=!1}})),r("slideChange",(()=>{!n.destroyed&&n.autoplay.running&&(m=!0)})),Object.assign(n.autoplay,{start:L,stop:D,pause:O,resume:S})}export{Autoplay as default}; +//# sourceMappingURL=autoplay.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/autoplay.min.mjs.map b/docs/vendor/swiper-bundle/modules/autoplay.min.mjs.map new file mode 100644 index 0000000..9e326f9 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/autoplay.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"autoplay.mjs.mjs","names":["getDocument","Autoplay","_ref","timeout","raf","swiper","extendParams","on","emit","params","autoplay","running","paused","timeLeft","enabled","delay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","isTouched","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","Date","getTime","onTransitionEnd","e","destroyed","wrapperEl","target","removeEventListener","detail","bySwiperTouchMove","resume","calcTimeLeft","requestAnimationFrame","run","delayForce","cancelAnimationFrame","currentSlideDelay","activeSlideEl","virtual","slides","filter","slideEl","classList","contains","activeIndex","parseInt","getAttribute","getSlideDelay","Number","isNaN","speed","proceed","isBeginning","loop","rewind","slidePrev","slideTo","length","isEnd","slideNext","cssMode","clearTimeout","setTimeout","start","stop","pause","internal","reset","addEventListener","onVisibilityChange","document","visibilityState","onPointerEnter","pointerType","animating","onPointerLeave","el","_s","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/autoplay.mjs b/docs/vendor/swiper-bundle/modules/autoplay.mjs new file mode 100644 index 0000000..732541d --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/autoplay.mjs @@ -0,0 +1,304 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; + +/* eslint no-underscore-dangle: "off" */ +/* eslint no-use-before-define: "off" */ +function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + } + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); +} + +export { Autoplay as default }; diff --git a/docs/vendor/swiper-bundle/modules/autoplay.scss b/docs/vendor/swiper-bundle/modules/autoplay.scss new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/controller-element.css b/docs/vendor/swiper-bundle/modules/controller-element.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/controller-element.min.css b/docs/vendor/swiper-bundle/modules/controller-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/controller.css b/docs/vendor/swiper-bundle/modules/controller.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/controller.less b/docs/vendor/swiper-bundle/modules/controller.less new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/controller.min.css b/docs/vendor/swiper-bundle/modules/controller.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/controller.min.mjs b/docs/vendor/swiper-bundle/modules/controller.min.mjs new file mode 100644 index 0000000..f9263b0 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/controller.min.mjs @@ -0,0 +1,2 @@ +import{n as nextTick,k as elementTransitionEnd}from"../shared/utils.min.mjs";function Controller(t){let{swiper:r,extendParams:e,on:n}=t;function o(t,r){const e=function(){let t,r,e;return(n,o)=>{for(r=-1,t=n.length;t-r>1;)e=t+r>>1,n[e]<=o?r=e:t=e;return t}}();let n,o;return this.x=t,this.y=r,this.lastIndex=t.length-1,this.interpolate=function(t){return t?(o=e(this.x,t),n=o-1,(t-this.x[n])*(this.y[o]-this.y[n])/(this.x[o]-this.x[n])+this.y[n]):0},this}function l(){r.controller.control&&r.controller.spline&&(r.controller.spline=void 0,delete r.controller.spline)}e({controller:{control:void 0,inverse:!1,by:"slide"}}),r.controller={control:void 0},n("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof r.params.controller.control||r.params.controller.control instanceof HTMLElement)){("string"==typeof r.params.controller.control?[...document.querySelectorAll(r.params.controller.control)]:[r.params.controller.control]).forEach((t=>{if(r.controller.control||(r.controller.control=[]),t&&t.swiper)r.controller.control.push(t.swiper);else if(t){const e=`${r.params.eventsPrefix}init`,n=o=>{r.controller.control.push(o.detail[0]),r.update(),t.removeEventListener(e,n)};t.addEventListener(e,n)}}))}else r.controller.control=r.params.controller.control})),n("update",(()=>{l()})),n("resize",(()=>{l()})),n("observerUpdate",(()=>{l()})),n("setTranslate",((t,e,n)=>{r.controller.control&&!r.controller.control.destroyed&&r.controller.setTranslate(e,n)})),n("setTransition",((t,e,n)=>{r.controller.control&&!r.controller.control.destroyed&&r.controller.setTransition(e,n)})),Object.assign(r.controller,{setTranslate:function(t,e){const n=r.controller.control;let l,s;const i=r.constructor;function a(t){if(t.destroyed)return;const e=r.rtlTranslate?-r.translate:r.translate;"slide"===r.params.controller.by&&(!function(t){r.controller.spline=r.params.loop?new o(r.slidesGrid,t.slidesGrid):new o(r.snapGrid,t.snapGrid)}(t),s=-r.controller.spline.interpolate(-e)),s&&"container"!==r.params.controller.by||(l=(t.maxTranslate()-t.minTranslate())/(r.maxTranslate()-r.minTranslate()),!Number.isNaN(l)&&Number.isFinite(l)||(l=1),s=(e-r.minTranslate())*l+t.minTranslate()),r.params.controller.inverse&&(s=t.maxTranslate()-s),t.updateProgress(s),t.setTranslate(s,r),t.updateActiveIndex(),t.updateSlidesClasses()}if(Array.isArray(n))for(let t=0;t{e.updateAutoHeight()})),elementTransitionEnd(e.wrapperEl,(()=>{o&&e.transitionEnd()}))))}if(Array.isArray(o))for(l=0;l>"] }] */ +function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; + controlElements.forEach(controlElement => { + if (!swiper.controller.control) swiper.controller.control = []; + if (controlElement && controlElement.swiper) { + swiper.controller.control.push(controlElement.swiper); + } else if (controlElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onControllerSwiper = e => { + swiper.controller.control.push(e.detail[0]); + swiper.update(); + controlElement.removeEventListener(eventName, onControllerSwiper); + }; + controlElement.addEventListener(eventName, onControllerSwiper); + } + }); + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); +} + +export { Controller as default }; diff --git a/docs/vendor/swiper-bundle/modules/controller.scss b/docs/vendor/swiper-bundle/modules/controller.scss new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/effect-cards-element.css b/docs/vendor/swiper-bundle/modules/effect-cards-element.css new file mode 100644 index 0000000..f831010 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cards-element.css @@ -0,0 +1,9 @@ +.swiper-cards { + overflow: visible; +} +.swiper-cards ::slotted(swiper-slide) { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/docs/vendor/swiper-bundle/modules/effect-cards-element.min.css b/docs/vendor/swiper-bundle/modules/effect-cards-element.min.css new file mode 100644 index 0000000..97c6648 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cards-element.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-cards.css b/docs/vendor/swiper-bundle/modules/effect-cards.css new file mode 100644 index 0000000..4b9f64b --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cards.css @@ -0,0 +1,9 @@ +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/docs/vendor/swiper-bundle/modules/effect-cards.less b/docs/vendor/swiper-bundle/modules/effect-cards.less new file mode 100644 index 0000000..ab90342 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cards.less @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/docs/vendor/swiper-bundle/modules/effect-cards.min.css b/docs/vendor/swiper-bundle/modules/effect-cards.min.css new file mode 100644 index 0000000..1769ef2 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cards.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-cards.min.mjs b/docs/vendor/swiper-bundle/modules/effect-cards.min.mjs new file mode 100644 index 0000000..2b2e86c --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cards.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCards(e){let{swiper:t,extendParams:a,on:s}=e;a({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}});effectInit({effect:"cards",swiper:t,on:s,setTranslate:()=>{const{slides:e,activeIndex:a,rtlTranslate:s}=t,r=t.params.cardsEffect,{startTranslate:i,isTouched:n}=t.touchEventsData,o=s?-t.translate:t.translate;for(let l=0;l0&&c<1&&(n||t.params.cssMode)&&o-1&&(n||t.params.cssMode)&&o>i;if(E||T){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;w+=-28*c*e,u+=-.5*e,S+=96*e,h=-25*e*Math.abs(c)+"%"}if(p=c<0?`calc(${p}px ${s?"-":"+"} (${S*Math.abs(c)}%))`:c>0?`calc(${p}px ${s?"-":"+"} (-${S*Math.abs(c)}%))`:`${p}px`,!t.isHorizontal()){const e=h;h=p,p=e}const g=c<0?""+(1+(1-u)*c):""+(1-(1-u)*c),x=`\n translate3d(${p}, ${h}, ${M}px)\n rotateZ(${r.rotate?s?-w:w:0}deg)\n scale(${g})\n `;if(r.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=createShadow("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(f))+e.length;effectTarget(r,d).style.transform=x}},setTransition:e=>{const a=t.slides.map((e=>getSlideTransformEl(e)));a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:a})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}export{EffectCards as default}; +//# sourceMappingURL=effect-cards.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-cards.min.mjs.map b/docs/vendor/swiper-bundle/modules/effect-cards.min.mjs.map new file mode 100644 index 0000000..e23f337 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cards.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cards.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectCards","_ref","swiper","extendParams","on","cardsEffect","slideShadows","rotate","perSlideRotate","perSlideOffset","effect","setTranslate","slides","activeIndex","rtlTranslate","rtl","params","startTranslate","isTouched","touchEventsData","currentTranslate","translate","i","length","slideEl","slideProgress","progress","Math","min","max","offset","swiperSlideOffset","centeredSlides","cssMode","wrapperEl","style","transform","minTranslate","tX","tY","tZ","abs","scale","tXAdd","slideIndex","virtual","enabled","from","isSwipeToNext","isSwipeToPrev","subProgress","isHorizontal","prevY","scaleString","shadowEl","querySelector","opacity","zIndex","round","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","perspective","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-cards.mjs b/docs/vendor/swiper-bundle/modules/effect-cards.mjs new file mode 100644 index 0000000..27e577a --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cards.mjs @@ -0,0 +1,125 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCards as default }; diff --git a/docs/vendor/swiper-bundle/modules/effect-cards.scss b/docs/vendor/swiper-bundle/modules/effect-cards.scss new file mode 100644 index 0000000..ab90342 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cards.scss @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/docs/vendor/swiper-bundle/modules/effect-coverflow-element.css b/docs/vendor/swiper-bundle/modules/effect-coverflow-element.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/effect-coverflow-element.min.css b/docs/vendor/swiper-bundle/modules/effect-coverflow-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/effect-coverflow.css b/docs/vendor/swiper-bundle/modules/effect-coverflow.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/effect-coverflow.less b/docs/vendor/swiper-bundle/modules/effect-coverflow.less new file mode 100644 index 0000000..ac504bf --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-coverflow.less @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/docs/vendor/swiper-bundle/modules/effect-coverflow.min.css b/docs/vendor/swiper-bundle/modules/effect-coverflow.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/effect-coverflow.min.mjs b/docs/vendor/swiper-bundle/modules/effect-coverflow.min.mjs new file mode 100644 index 0000000..6c1d2e1 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-coverflow.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{g as getSlideTransformEl,o as getRotateFix}from"../shared/utils.min.mjs";function EffectCoverflow(e){let{swiper:t,extendParams:s,on:r}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}});effectInit({effect:"coverflow",swiper:t,on:r,setTranslate:()=>{const{width:e,height:s,slides:r,slidesSizesGrid:o}=t,a=t.params.coverflowEffect,i=t.isHorizontal(),l=t.translate,f=i?e/2-l:s/2-l,d=i?a.rotate:-a.rotate,c=a.depth,h=getRotateFix(t);for(let e=0,t=r.length;e0?n:0),s&&(s.style.opacity=-n>0?-n:0)}}},setTransition:e=>{t.slides.map((e=>getSlideTransformEl(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})}export{EffectCoverflow as default}; +//# sourceMappingURL=effect-coverflow.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-coverflow.min.mjs.map b/docs/vendor/swiper-bundle/modules/effect-coverflow.min.mjs.map new file mode 100644 index 0000000..b2820c2 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-coverflow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-coverflow.mjs.mjs","names":["createShadow","effectInit","effectTarget","getSlideTransformEl","getRotateFix","EffectCoverflow","_ref","swiper","extendParams","on","coverflowEffect","rotate","stretch","depth","scale","modifier","slideShadows","effect","setTranslate","width","swiperWidth","height","swiperHeight","slides","slidesSizesGrid","params","isHorizontal","transform","translate","center","r","i","length","slideEl","slideSize","centerOffset","swiperSlideOffset","offsetMultiplier","rotateY","rotateX","translateZ","Math","abs","indexOf","parseFloat","translateY","translateX","slideTransform","style","zIndex","round","shadowBeforeEl","querySelector","shadowAfterEl","opacity","setTransition","duration","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","perspective","overwriteParams","watchSlidesProgress"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-coverflow.mjs b/docs/vendor/swiper-bundle/modules/effect-coverflow.mjs new file mode 100644 index 0000000..17e0949 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-coverflow.mjs @@ -0,0 +1,104 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs'; + +function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + const r = getRotateFix(swiper); + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); +} + +export { EffectCoverflow as default }; diff --git a/docs/vendor/swiper-bundle/modules/effect-coverflow.scss b/docs/vendor/swiper-bundle/modules/effect-coverflow.scss new file mode 100644 index 0000000..ac504bf --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-coverflow.scss @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/docs/vendor/swiper-bundle/modules/effect-creative-element.css b/docs/vendor/swiper-bundle/modules/effect-creative-element.css new file mode 100644 index 0000000..6ccf22b --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-creative-element.css @@ -0,0 +1,6 @@ +.swiper-creative ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} diff --git a/docs/vendor/swiper-bundle/modules/effect-creative-element.min.css b/docs/vendor/swiper-bundle/modules/effect-creative-element.min.css new file mode 100644 index 0000000..70fb705 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-creative-element.min.css @@ -0,0 +1 @@ +.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-creative.css b/docs/vendor/swiper-bundle/modules/effect-creative.css new file mode 100644 index 0000000..2082494 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-creative.css @@ -0,0 +1,6 @@ +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} diff --git a/docs/vendor/swiper-bundle/modules/effect-creative.less b/docs/vendor/swiper-bundle/modules/effect-creative.less new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-creative.less @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/docs/vendor/swiper-bundle/modules/effect-creative.min.css b/docs/vendor/swiper-bundle/modules/effect-creative.min.css new file mode 100644 index 0000000..404da2c --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-creative.min.css @@ -0,0 +1 @@ +.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-creative.min.mjs b/docs/vendor/swiper-bundle/modules/effect-creative.min.mjs new file mode 100644 index 0000000..789c2c0 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-creative.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl,o as getRotateFix}from"../shared/utils.min.mjs";function EffectCreative(e){let{swiper:t,extendParams:s,on:r}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;effectInit({effect:"creative",swiper:t,on:r,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:r}=t,i=t.params.creativeEffect,{progressMultiplier:o}=i,l=t.params.centeredSlides,n=getRotateFix(t);if(l){const e=r[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(w=i.prev,h=!0),d.forEach(((e,t)=>{d[t]=`calc(${e}px + (${a(w.translate[t])} * ${Math.abs(f*o)}))`})),g.forEach(((e,t)=>{let s=w.rotate[t]*Math.abs(f*o);g[t]=s})),r.style.zIndex=-Math.abs(Math.round(c))+e.length;const y=d.join(", "),u=`rotateX(${n(g[0])}deg) rotateY(${n(g[1])}deg) rotateZ(${n(g[2])}deg)`,v=m<0?`scale(${1+(1-w.scale)*m*o})`:`scale(${1-(1-w.scale)*m*o})`,E=m<0?1+(1-w.opacity)*m*o:1-(1-w.opacity)*m*o,M=`translate3d(${y}) ${u} ${v}`;if(h&&w.shadow||!h){let e=r.querySelector(".swiper-slide-shadow");if(!e&&w.shadow&&(e=createShadow("creative",r)),e){const t=i.shadowPerProgress?f*(1/i.limitProgress):f;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const $=effectTarget(i,r);$.style.transform=M,$.style.opacity=E,w.origin&&($.style.transformOrigin=w.origin)}},setTransition:e=>{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}export{EffectCreative as default}; +//# sourceMappingURL=effect-creative.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-creative.min.mjs.map b/docs/vendor/swiper-bundle/modules/effect-creative.min.mjs.map new file mode 100644 index 0000000..dbbd2ae --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-creative.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-creative.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","getRotateFix","EffectCreative","_ref","swiper","extendParams","on","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","perspective","prev","translate","rotate","opacity","scale","next","getTranslateValue","value","effect","setTranslate","slides","wrapperEl","slidesSizesGrid","params","multiplier","isCenteredSlides","centeredSlides","rotateFix","margin","slidesOffsetBefore","style","transform","i","length","slideEl","slideProgress","progress","Math","min","max","originalProgress","offset","swiperSlideOffset","t","cssMode","r","custom","isHorizontal","data","forEach","index","abs","val","zIndex","round","translateString","join","rotateString","scaleString","opacityString","shadow","shadowEl","querySelector","shadowOpacity","targetEl","origin","transformOrigin","setTransition","duration","transformElements","map","el","transitionDuration","querySelectorAll","allSlides","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-creative.mjs b/docs/vendor/swiper-bundle/modules/effect-creative.mjs new file mode 100644 index 0000000..88f5ff7 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-creative.mjs @@ -0,0 +1,146 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs'; + +function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + const rotateFix = getRotateFix(swiper); + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCreative as default }; diff --git a/docs/vendor/swiper-bundle/modules/effect-creative.scss b/docs/vendor/swiper-bundle/modules/effect-creative.scss new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-creative.scss @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/docs/vendor/swiper-bundle/modules/effect-cube-element.css b/docs/vendor/swiper-bundle/modules/effect-cube-element.css new file mode 100644 index 0000000..af13615 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cube-element.css @@ -0,0 +1,53 @@ +.swiper-cube { + overflow: visible; +} +.swiper-cube ::slotted(swiper-slide) { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-cube.swiper-rtl ::slotted(swiper-slide) { + transform-origin: 100% 0; +} +.swiper-cube ::slotted(.swiper-slide-active), +.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +.swiper-cube ::slotted(.swiper-slide-active), +.swiper-cube ::slotted(.swiper-slide-next), +.swiper-cube ::slotted(.swiper-slide-prev) { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube ::slotted(.swiper-slide-next) + ::slotted(swiper-slide) { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start *//* Cube slide shadows end */ diff --git a/docs/vendor/swiper-bundle/modules/effect-cube-element.min.css b/docs/vendor/swiper-bundle/modules/effect-cube-element.min.css new file mode 100644 index 0000000..afc6ca2 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cube-element.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-cube.css b/docs/vendor/swiper-bundle/modules/effect-cube.css new file mode 100644 index 0000000..14b5d08 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cube.css @@ -0,0 +1,62 @@ +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start */ +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube slide shadows end */ diff --git a/docs/vendor/swiper-bundle/modules/effect-cube.less b/docs/vendor/swiper-bundle/modules/effect-cube.less new file mode 100644 index 0000000..54bdc01 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cube.less @@ -0,0 +1,69 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/docs/vendor/swiper-bundle/modules/effect-cube.min.css b/docs/vendor/swiper-bundle/modules/effect-cube.min.css new file mode 100644 index 0000000..e91764c --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cube.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-cube.min.mjs b/docs/vendor/swiper-bundle/modules/effect-cube.min.mjs new file mode 100644 index 0000000..c2f2d80 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cube.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{c as createElement,o as getRotateFix}from"../shared/utils.min.mjs";function EffectCube(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const r=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),r=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),r||(r=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(r)),a&&(a.style.opacity=Math.max(-t,0)),r&&(r.style.opacity=Math.max(t,0))};effectInit({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:o,height:i,rtlTranslate:l,size:d,browser:n}=t,p=getRotateFix(t),c=t.params.cubeEffect,w=t.isHorizontal(),h=t.virtual&&t.params.virtual.enabled;let f,m=0;c.shadow&&(w?(f=t.wrapperEl.querySelector(".swiper-cube-shadow"),f||(f=createElement("div","swiper-cube-shadow"),t.wrapperEl.append(f)),f.style.height=`${o}px`):(f=e.querySelector(".swiper-cube-shadow"),f||(f=createElement("div","swiper-cube-shadow"),e.append(f))));for(let e=0;e-1&&(m=90*s+90*n,l&&(m=90*-s-90*n)),t.style.transform=x,c.slideShadows&&r(t,n,w)}if(s.style.transformOrigin=`50% 50% -${d/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${d/2}px`,c.shadow)if(w)f.style.transform=`translate3d(0px, ${o/2+c.shadowOffset}px, ${-o/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(m)-90*Math.floor(Math.abs(m)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,a=c.shadowScale/t,r=c.shadowOffset;f.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${i/2+r}px, ${-i/2/a}px) rotateX(-89.99deg)`}const u=(n.isSafari||n.isWebView)&&n.needPerspectiveFix?-d/2:0;s.style.transform=`translate3d(0px,0,${u}px) rotateX(${p(t.isHorizontal()?0:m)}deg) rotateY(${p(t.isHorizontal()?-m:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${u}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);r(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})}export{EffectCube as default}; +//# sourceMappingURL=effect-cube.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-cube.min.mjs.map b/docs/vendor/swiper-bundle/modules/effect-cube.min.mjs.map new file mode 100644 index 0000000..a2ee782 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cube.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cube.mjs.mjs","names":["effectInit","createElement","getRotateFix","EffectCube","_ref","swiper","extendParams","on","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","createSlideShadows","slideEl","progress","isHorizontal","shadowBefore","querySelector","shadowAfter","split","append","style","opacity","Math","max","effect","setTranslate","el","wrapperEl","slides","width","swiperWidth","height","swiperHeight","rtlTranslate","rtl","size","swiperSize","browser","r","params","isVirtual","virtual","enabled","cubeShadowEl","wrapperRotate","i","length","slideIndex","parseInt","getAttribute","slideAngle","round","floor","min","tx","ty","tz","transform","transformOrigin","shadowAngle","abs","multiplier","sin","PI","cos","scale1","scale2","offset","zFactor","isSafari","isWebView","needPerspectiveFix","setProperty","setTransition","duration","forEach","transitionDuration","querySelectorAll","subEl","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","resistanceRatio","spaceBetween","centeredSlides","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-cube.mjs b/docs/vendor/swiper-bundle/modules/effect-cube.mjs new file mode 100644 index 0000000..59fdbe4 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cube.mjs @@ -0,0 +1,174 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { c as createElement, o as getRotateFix } from '../shared/utils.mjs'; + +function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const r = getRotateFix(swiper); + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); +} + +export { EffectCube as default }; diff --git a/docs/vendor/swiper-bundle/modules/effect-cube.scss b/docs/vendor/swiper-bundle/modules/effect-cube.scss new file mode 100644 index 0000000..54bdc01 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-cube.scss @@ -0,0 +1,69 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/docs/vendor/swiper-bundle/modules/effect-fade-element.css b/docs/vendor/swiper-bundle/modules/effect-fade-element.css new file mode 100644 index 0000000..76242c6 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-fade-element.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide) { + transition-timing-function: ease-out; +} +.swiper-fade ::slotted(swiper-slide) { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-fade ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} diff --git a/docs/vendor/swiper-bundle/modules/effect-fade-element.min.css b/docs/vendor/swiper-bundle/modules/effect-fade-element.min.css new file mode 100644 index 0000000..6fb7280 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-fade-element.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-fade.css b/docs/vendor/swiper-bundle/modules/effect-fade.css new file mode 100644 index 0000000..ac7449e --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-fade.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active { + pointer-events: auto; +} +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} diff --git a/docs/vendor/swiper-bundle/modules/effect-fade.less b/docs/vendor/swiper-bundle/modules/effect-fade.less new file mode 100644 index 0000000..0fadca4 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-fade.less @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + pointer-events: auto; + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/docs/vendor/swiper-bundle/modules/effect-fade.min.css b/docs/vendor/swiper-bundle/modules/effect-fade.min.css new file mode 100644 index 0000000..e535e7e --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-fade.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-fade.min.mjs b/docs/vendor/swiper-bundle/modules/effect-fade.min.mjs new file mode 100644 index 0000000..52a481c --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-fade.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectFade(e){let{swiper:t,extendParams:s,on:a}=e;s({fadeEffect:{crossFade:!1}});effectInit({effect:"fade",swiper:t,on:a,setTranslate:()=>{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}export{EffectFade as default}; +//# sourceMappingURL=effect-fade.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-fade.min.mjs.map b/docs/vendor/swiper-bundle/modules/effect-fade.min.mjs.map new file mode 100644 index 0000000..91e91f1 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-fade.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-fade.mjs.mjs","names":["effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectFade","_ref","swiper","extendParams","on","fadeEffect","crossFade","effect","setTranslate","slides","params","i","length","slideEl","tx","swiperSlideOffset","virtualTranslate","translate","ty","isHorizontal","slideOpacity","Math","max","abs","progress","min","targetEl","style","opacity","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","allSlides","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","cssMode"],"sources":["0"],"mappings":"YAAcA,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,wBAA2B,0BAEzC,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,WAAY,CACVC,WAAW,KAoCfV,WAAW,CACTW,OAAQ,OACRL,SACAE,KACAI,aArCmB,KACnB,MAAMC,OACJA,GACEP,EACEQ,EAASR,EAAOQ,OAAOL,WAC7B,IAAK,IAAIM,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,GAAK,EAAG,CACzC,MAAME,EAAUX,EAAOO,OAAOE,GAE9B,IAAIG,GADWD,EAAQE,kBAElBb,EAAOQ,OAAOM,mBAAkBF,GAAMZ,EAAOe,WAClD,IAAIC,EAAK,EACJhB,EAAOiB,iBACVD,EAAKJ,EACLA,EAAK,GAEP,MAAMM,EAAelB,EAAOQ,OAAOL,WAAWC,UAAYe,KAAKC,IAAI,EAAID,KAAKE,IAAIV,EAAQW,UAAW,GAAK,EAAIH,KAAKI,IAAIJ,KAAKC,IAAIT,EAAQW,UAAW,GAAI,GAC/IE,EAAW7B,aAAaa,EAAQG,GACtCa,EAASC,MAAMC,QAAUR,EACzBM,EAASC,MAAME,UAAY,eAAef,QAASI,WACrD,GAmBAY,cAjBoBC,IACpB,MAAMC,EAAoB9B,EAAOO,OAAOwB,KAAIpB,GAAWd,oBAAoBc,KAC3EmB,EAAkBE,SAAQC,IACxBA,EAAGR,MAAMS,mBAAqB,GAAGL,KAAY,IAE/CjC,2BAA2B,CACzBI,SACA6B,WACAC,oBACAK,WAAW,GACX,EAQFC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACd1B,kBAAmBd,EAAOQ,OAAOiC,WAGvC,QAES3C"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-fade.mjs b/docs/vendor/swiper-bundle/modules/effect-fade.mjs new file mode 100644 index 0000000..140e9b7 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-fade.mjs @@ -0,0 +1,66 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFade as default }; diff --git a/docs/vendor/swiper-bundle/modules/effect-fade.scss b/docs/vendor/swiper-bundle/modules/effect-fade.scss new file mode 100644 index 0000000..bb059dd --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-fade.scss @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/docs/vendor/swiper-bundle/modules/effect-flip-element.css b/docs/vendor/swiper-bundle/modules/effect-flip-element.css new file mode 100644 index 0000000..4ae8338 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-flip-element.css @@ -0,0 +1,17 @@ +.swiper-flip { + overflow: visible; +} +.swiper-flip ::slotted(swiper-slide) { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-flip ::slotted(.swiper-slide-active), +.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +/* Flip slide shadows start *//* Flip slide shadows end */ diff --git a/docs/vendor/swiper-bundle/modules/effect-flip-element.min.css b/docs/vendor/swiper-bundle/modules/effect-flip-element.min.css new file mode 100644 index 0000000..40d852b --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-flip-element.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-flip.css b/docs/vendor/swiper-bundle/modules/effect-flip.css new file mode 100644 index 0000000..f4b1d34 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-flip.css @@ -0,0 +1,26 @@ +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +/* Flip slide shadows start */ +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Flip slide shadows end */ diff --git a/docs/vendor/swiper-bundle/modules/effect-flip.less b/docs/vendor/swiper-bundle/modules/effect-flip.less new file mode 100644 index 0000000..6c16d11 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-flip.less @@ -0,0 +1,28 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/docs/vendor/swiper-bundle/modules/effect-flip.min.css b/docs/vendor/swiper-bundle/modules/effect-flip.min.css new file mode 100644 index 0000000..b7656ff --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-flip.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-flip.min.mjs b/docs/vendor/swiper-bundle/modules/effect-flip.min.mjs new file mode 100644 index 0000000..5db63a2 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-flip.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl,o as getRotateFix}from"../shared/utils.min.mjs";function EffectFlip(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const r=(e,s)=>{let a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),r=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=createShadow("flip",e,t.isHorizontal()?"left":"top")),r||(r=createShadow("flip",e,t.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),r&&(r.style.opacity=Math.max(s,0))};effectInit({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect,i=getRotateFix(t);for(let o=0;o{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),r(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}export{EffectFlip as default}; +//# sourceMappingURL=effect-flip.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-flip.min.mjs.map b/docs/vendor/swiper-bundle/modules/effect-flip.min.mjs.map new file mode 100644 index 0000000..475c1df --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-flip.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-flip.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","getRotateFix","EffectFlip","_ref","swiper","extendParams","on","flipEffect","slideShadows","limitRotation","createSlideShadows","slideEl","progress","shadowBefore","isHorizontal","querySelector","shadowAfter","style","opacity","Math","max","effect","setTranslate","slides","rtlTranslate","rtl","params","rotateFix","i","length","min","offset","swiperSlideOffset","rotateY","rotateX","tx","cssMode","translate","ty","zIndex","abs","round","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","virtualTranslate"],"sources":["0"],"mappings":"YAAcA,iBAAoB,8CACpBC,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,yBAA0BC,iBAAoB,0BAE5D,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,WAAY,CACVC,cAAc,EACdC,eAAe,KAGnB,MAAMC,EAAqB,CAACC,EAASC,KACnC,IAAIC,EAAeT,EAAOU,eAAiBH,EAAQI,cAAc,6BAA+BJ,EAAQI,cAAc,4BAClHC,EAAcZ,EAAOU,eAAiBH,EAAQI,cAAc,8BAAgCJ,EAAQI,cAAc,+BACjHF,IACHA,EAAejB,aAAa,OAAQe,EAASP,EAAOU,eAAiB,OAAS,QAE3EE,IACHA,EAAcpB,aAAa,OAAQe,EAASP,EAAOU,eAAiB,QAAU,WAE5ED,IAAcA,EAAaI,MAAMC,QAAUC,KAAKC,KAAKR,EAAU,IAC/DI,IAAaA,EAAYC,MAAMC,QAAUC,KAAKC,IAAIR,EAAU,GAAE,EA+DpEf,WAAW,CACTwB,OAAQ,OACRjB,SACAE,KACAgB,aAtDmB,KACnB,MAAMC,OACJA,EACAC,aAAcC,GACZrB,EACEsB,EAAStB,EAAOsB,OAAOnB,WACvBoB,EAAY1B,aAAaG,GAC/B,IAAK,IAAIwB,EAAI,EAAGA,EAAIL,EAAOM,OAAQD,GAAK,EAAG,CACzC,MAAMjB,EAAUY,EAAOK,GACvB,IAAIhB,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKW,IAAInB,EAAQC,SAAU,IAAK,IAEtD,MAAMmB,EAASpB,EAAQqB,kBAEvB,IAAIC,GADY,IAAMrB,EAElBsB,EAAU,EACVC,EAAK/B,EAAOsB,OAAOU,SAAWL,EAAS3B,EAAOiC,WAAaN,EAC3DO,EAAK,EACJlC,EAAOU,eAKDW,IACTQ,GAAWA,IALXK,EAAKH,EACLA,EAAK,EACLD,GAAWD,EACXA,EAAU,GAIZtB,EAAQM,MAAMsB,QAAUpB,KAAKqB,IAAIrB,KAAKsB,MAAM7B,IAAaW,EAAOM,OAC5DH,EAAOlB,cACTE,EAAmBC,EAASC,GAE9B,MAAM8B,EAAY,eAAeP,QAASG,qBAAsBX,EAAUO,kBAAwBP,EAAUM,SAC3FnC,aAAa4B,EAAQf,GAC7BM,MAAMyB,UAAYA,CAC7B,GAqBAC,cAnBoBC,IACpB,MAAMC,EAAoBzC,EAAOmB,OAAOuB,KAAInC,GAAWX,oBAAoBW,KAC3EkC,EAAkBE,SAAQC,IACxBA,EAAG/B,MAAMgC,mBAAqB,GAAGL,MACjCI,EAAGE,iBAAiB,gHAAgHH,SAAQI,IAC1IA,EAASlC,MAAMgC,mBAAqB,GAAGL,KAAY,GACnD,IAEJ7C,2BAA2B,CACzBK,SACAwC,WACAC,qBACA,EAQFO,gBAnEsB,KAEtBhD,EAAOsB,OAAOnB,WACdH,EAAOmB,OAAOwB,SAAQpC,IACpB,IAAIC,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKW,IAAInB,EAAQC,SAAU,IAAK,IAEtDF,EAAmBC,EAASC,EAAS,GACrC,EA2DFyC,gBAAiB,IAAMjD,EAAOsB,OAAOnB,WACrC+C,YAAa,KAAM,EACnBC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACdC,kBAAmBxD,EAAOsB,OAAOU,WAGvC,QAESlC"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/effect-flip.mjs b/docs/vendor/swiper-bundle/modules/effect-flip.mjs new file mode 100644 index 0000000..5175981 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-flip.mjs @@ -0,0 +1,111 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs'; + +function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + const rotateFix = getRotateFix(swiper); + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFlip as default }; diff --git a/docs/vendor/swiper-bundle/modules/effect-flip.scss b/docs/vendor/swiper-bundle/modules/effect-flip.scss new file mode 100644 index 0000000..6c16d11 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/effect-flip.scss @@ -0,0 +1,28 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/docs/vendor/swiper-bundle/modules/free-mode-element.css b/docs/vendor/swiper-bundle/modules/free-mode-element.css new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/free-mode-element.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/docs/vendor/swiper-bundle/modules/free-mode-element.min.css b/docs/vendor/swiper-bundle/modules/free-mode-element.min.css new file mode 100644 index 0000000..ecc8120 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/free-mode-element.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/free-mode.css b/docs/vendor/swiper-bundle/modules/free-mode.css new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/free-mode.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/docs/vendor/swiper-bundle/modules/free-mode.less b/docs/vendor/swiper-bundle/modules/free-mode.less new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/free-mode.less @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/docs/vendor/swiper-bundle/modules/free-mode.min.css b/docs/vendor/swiper-bundle/modules/free-mode.min.css new file mode 100644 index 0000000..ecc8120 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/free-mode.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/free-mode.min.mjs b/docs/vendor/swiper-bundle/modules/free-mode.min.mjs new file mode 100644 index 0000000..251c4ac --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/free-mode.min.mjs @@ -0,0 +1,2 @@ +import{d as now,k as elementTransitionEnd}from"../shared/utils.min.mjs";function freeMode(e){let{swiper:t,extendParams:o,emit:n,once:s}=e;o({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:o}=t;0===e.velocities.length&&e.velocities.push({position:o[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:o[t.isHorizontal()?"currentX":"currentY"],time:now()})},onTouchEnd:function(e){let{currentPos:o}=e;if(t.params.cssMode)return;const{params:i,wrapperEl:a,rtlTranslate:r,snapGrid:l,touchEventsData:m}=t,c=now()-m.touchStartTime;if(o<-t.minTranslate())t.slideTo(t.activeIndex);else if(o>-t.maxTranslate())t.slides.length1){const e=m.velocities.pop(),o=m.velocities.pop(),n=e.position-o.position,s=e.time-o.time;t.velocity=n/s,t.velocity/=2,Math.abs(t.velocity)150||now()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=i.freeMode.momentumVelocityRatio,m.velocities.length=0;let e=1e3*i.freeMode.momentumRatio;const o=t.velocity*e;let c=t.translate+o;r&&(c=-c);let d,u=!1;const f=20*Math.abs(t.velocity)*i.freeMode.momentumBounceRatio;let p;if(ct.minTranslate())i.freeMode.momentumBounce?(c-t.minTranslate()>f&&(c=t.minTranslate()+f),d=t.minTranslate(),u=!0,m.allowMomentumBounce=!0):c=t.minTranslate(),i.loop&&i.centeredSlides&&(p=!0);else if(i.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(l[e]-c){t.loopFix()})),0!==t.velocity){if(e=r?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),i.freeMode.sticky){const o=Math.abs((r?-c:c)-t.translate),n=t.slidesSizesGrid[t.activeIndex];e=o{t&&!t.destroyed&&m.allowMomentumBounce&&(n("momentumBounce"),t.setTransition(i.speed),setTimeout((()=>{t.setTranslate(d),elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(n("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(i.freeMode.sticky)return void t.slideToClosest();i.freeMode&&n("_freeModeNoMomentumRelease")}(!i.freeMode.momentum||c>=i.longSwipesMs)&&(n("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})}export{freeMode as default}; +//# sourceMappingURL=free-mode.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/free-mode.min.mjs.map b/docs/vendor/swiper-bundle/modules/free-mode.min.mjs.map new file mode 100644 index 0000000..97162ea --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/free-mode.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"free-mode.mjs.mjs","names":["now","elementTransitionEnd","freeMode","_ref","swiper","extendParams","emit","once","enabled","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","Object","assign","onTouchStart","params","cssMode","translate","getTranslate","setTranslate","setTransition","touchEventsData","velocities","length","onTouchEnd","currentPos","rtl","onTouchMove","data","touches","push","position","isHorizontal","time","touchStartTime","_ref2","wrapperEl","rtlTranslate","snapGrid","timeDiff","minTranslate","slideTo","activeIndex","maxTranslate","slides","lastMoveEvent","pop","velocityEvent","distance","velocity","Math","abs","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","allowMomentumBounce","loop","centeredSlides","nextSlide","j","swipeDirection","loopFix","moveDistance","currentSlideSize","slidesSizesGrid","speed","slideToClosest","updateProgress","transitionStart","animating","destroyed","setTimeout","transitionEnd","updateActiveIndex","updateSlidesClasses","longSwipesMs"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/free-mode.mjs b/docs/vendor/swiper-bundle/modules/free-mode.mjs new file mode 100644 index 0000000..db39c3d --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/free-mode.mjs @@ -0,0 +1,237 @@ +import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs'; + +function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); +} + +export { freeMode as default }; diff --git a/docs/vendor/swiper-bundle/modules/free-mode.scss b/docs/vendor/swiper-bundle/modules/free-mode.scss new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/free-mode.scss @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/docs/vendor/swiper-bundle/modules/grid-element.css b/docs/vendor/swiper-bundle/modules/grid-element.css new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/grid-element.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/docs/vendor/swiper-bundle/modules/grid-element.min.css b/docs/vendor/swiper-bundle/modules/grid-element.min.css new file mode 100644 index 0000000..7d5f8f9 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/grid-element.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/grid.css b/docs/vendor/swiper-bundle/modules/grid.css new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/grid.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/docs/vendor/swiper-bundle/modules/grid.less b/docs/vendor/swiper-bundle/modules/grid.less new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/grid.less @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/docs/vendor/swiper-bundle/modules/grid.min.css b/docs/vendor/swiper-bundle/modules/grid.min.css new file mode 100644 index 0000000..7d5f8f9 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/grid.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/grid.min.mjs b/docs/vendor/swiper-bundle/modules/grid.min.mjs new file mode 100644 index 0000000..84f1b4e --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/grid.min.mjs @@ -0,0 +1,2 @@ +function Grid(e){let i,r,a,t,{swiper:s,extendParams:l,on:o}=e;l({grid:{rows:1,fill:"column"}});const n=()=>{let e=s.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*s.size:"string"==typeof e&&(e=parseFloat(e)),e};o("init",(()=>{t=s.params.grid&&s.params.grid.rows>1})),o("update",(()=>{const{params:e,el:i}=s,r=e.grid&&e.grid.rows>1;t&&!r?(i.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,s.emitContainerClasses()):!t&&r&&(i.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&i.classList.add(`${e.containerModifierClass}grid-column`),s.emitContainerClasses()),t=r})),s.grid={initSlides:e=>{const{slidesPerView:t}=s.params,{rows:l,fill:o}=s.params.grid,n=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:e.length;a=Math.floor(n/l),i=Math.floor(n/l)===n/l?n:Math.ceil(n/l)*l,"auto"!==t&&"row"===o&&(i=Math.max(i,t*l)),r=i/l},unsetSlides:()=>{s.slides&&s.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[s.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,t,l)=>{const{slidesPerGroup:o}=s.params,d=n(),{rows:p,fill:c}=s.params.grid,g=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:l.length;let u,h,m;if("row"===c&&o>1){const r=Math.floor(e/(o*p)),a=e-p*o*r,s=0===r?o:Math.min(Math.ceil((g-r*p*o)/p),o);m=Math.floor(a/s),h=a-m*s+r*o,u=h+m*i/p,t.style.order=u}else"column"===c?(h=Math.floor(e/p),m=e-h*p,(h>a||h===a&&m===p-1)&&(m+=1,m>=p&&(m=0,h+=1))):(m=Math.floor(e/r),h=e-m*r);t.row=m,t.column=h,t.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,t.style[s.getDirectionLabel("margin-top")]=0!==m?d&&`${d}px`:"",t.swiperSlideGridSet=!0},updateWrapperSize:(e,r)=>{const{centeredSlides:a,roundLengths:t}=s.params,l=n(),{rows:o}=s.params.grid;if(s.virtualSize=(e+l)*i,s.virtualSize=Math.ceil(s.virtualSize/o)-l,s.params.cssMode||(s.wrapperEl.style[s.getDirectionLabel("width")]=`${s.virtualSize+l}px`),a){const e=[];for(let i=0;i { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; +} + +export { Grid as default }; diff --git a/docs/vendor/swiper-bundle/modules/grid.scss b/docs/vendor/swiper-bundle/modules/grid.scss new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/grid.scss @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/docs/vendor/swiper-bundle/modules/hash-navigation-element.css b/docs/vendor/swiper-bundle/modules/hash-navigation-element.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/hash-navigation-element.min.css b/docs/vendor/swiper-bundle/modules/hash-navigation-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/hash-navigation.css b/docs/vendor/swiper-bundle/modules/hash-navigation.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/hash-navigation.less b/docs/vendor/swiper-bundle/modules/hash-navigation.less new file mode 100644 index 0000000..be8912a --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/hash-navigation.less @@ -0,0 +1,2 @@ +@import url('../swiper-vars.less'); + diff --git a/docs/vendor/swiper-bundle/modules/hash-navigation.min.css b/docs/vendor/swiper-bundle/modules/hash-navigation.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/hash-navigation.min.mjs b/docs/vendor/swiper-bundle/modules/hash-navigation.min.mjs new file mode 100644 index 0000000..0c58eff --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/hash-navigation.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren}from"../shared/utils.min.mjs";function HashNavigation(a){let{swiper:e,extendParams:t,emit:s,on:i}=a,n=!1;const r=getDocument(),h=getWindow();t({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(a,t){if(e.virtual&&e.params.virtual.enabled){const a=e.slides.filter((a=>a.getAttribute("data-hash")===t))[0];if(!a)return 0;return parseInt(a.getAttribute("data-swiper-slide-index"),10)}return e.getSlideIndex(elementChildren(e.slidesEl,`.${e.params.slideClass}[data-hash="${t}"], swiper-slide[data-hash="${t}"]`)[0])}}});const d=()=>{s("hashChange");const a=r.location.hash.replace("#",""),t=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex];if(a!==(t?t.getAttribute("data-hash"):"")){const t=e.params.hashNavigation.getSlideIndex(e,a);if(void 0===t||Number.isNaN(t))return;e.slideTo(t)}},l=()=>{if(!n||!e.params.hashNavigation.enabled)return;const a=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],t=a?a.getAttribute("data-hash")||a.getAttribute("data-history"):"";e.params.hashNavigation.replaceState&&h.history&&h.history.replaceState?(h.history.replaceState(null,null,`#${t}`||""),s("hashSet")):(r.location.hash=t||"",s("hashSet"))};i("init",(()=>{e.params.hashNavigation.enabled&&(()=>{if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;n=!0;const a=r.location.hash.replace("#","");if(a){const t=0,s=e.params.hashNavigation.getSlideIndex(e,a);e.slideTo(s||0,t,e.params.runCallbacksOnInit,!0)}e.params.hashNavigation.watchState&&h.addEventListener("hashchange",d)})()})),i("destroy",(()=>{e.params.hashNavigation.enabled&&e.params.hashNavigation.watchState&&h.removeEventListener("hashchange",d)})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{n&&l()})),i("slideChange",(()=>{n&&e.params.cssMode&&l()}))}export{HashNavigation as default}; +//# sourceMappingURL=hash-navigation.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/hash-navigation.min.mjs.map b/docs/vendor/swiper-bundle/modules/hash-navigation.min.mjs.map new file mode 100644 index 0000000..373df60 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/hash-navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"hash-navigation.mjs.mjs","names":["getDocument","getWindow","elementChildren","HashNavigation","_ref","swiper","extendParams","emit","on","initialized","document","window","hashNavigation","enabled","replaceState","watchState","getSlideIndex","_s","hash","virtual","params","slideWithHash","slides","filter","slideEl","getAttribute","parseInt","slidesEl","slideClass","onHashChange","newHash","location","replace","activeSlideEl","querySelector","activeIndex","newIndex","Number","isNaN","slideTo","setHash","activeSlideHash","history","speed","index","runCallbacksOnInit","addEventListener","init","removeEventListener","cssMode"],"sources":["0"],"mappings":"YAAcA,iBAAkBC,cAAiB,+CACnCC,oBAAuB,0BAErC,SAASC,eAAeC,GACtB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,KACZA,EAAIC,GACJA,GACEJ,EACAK,GAAc,EAClB,MAAMC,EAAWV,cACXW,EAASV,YACfK,EAAa,CACXM,eAAgB,CACdC,SAAS,EACTC,cAAc,EACdC,YAAY,EACZ,aAAAC,CAAcC,EAAIC,GAChB,GAAIb,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAS,CACnD,MAAMQ,EAAgBhB,EAAOiB,OAAOC,QAAOC,GAAWA,EAAQC,aAAa,eAAiBP,IAAM,GAClG,IAAKG,EAAe,OAAO,EAE3B,OADcK,SAASL,EAAcI,aAAa,2BAA4B,GAEhF,CACA,OAAOpB,EAAOW,cAAcd,gBAAgBG,EAAOsB,SAAU,IAAItB,EAAOe,OAAOQ,yBAAyBV,gCAAmCA,OAAU,GACvJ,KAGJ,MAAMW,EAAe,KACnBtB,EAAK,cACL,MAAMuB,EAAUpB,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IAC9CC,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAElL,GAAIL,KADoBG,EAAgBA,EAAcR,aAAa,aAAe,IACjD,CAC/B,MAAMW,EAAW/B,EAAOe,OAAOR,eAAeI,cAAcX,EAAQyB,GACpE,QAAwB,IAAbM,GAA4BC,OAAOC,MAAMF,GAAW,OAC/D/B,EAAOkC,QAAQH,EACjB,GAEII,EAAU,KACd,IAAK/B,IAAgBJ,EAAOe,OAAOR,eAAeC,QAAS,OAC3D,MAAMoB,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAC5KM,EAAkBR,EAAgBA,EAAcR,aAAa,cAAgBQ,EAAcR,aAAa,gBAAkB,GAC5HpB,EAAOe,OAAOR,eAAeE,cAAgBH,EAAO+B,SAAW/B,EAAO+B,QAAQ5B,cAChFH,EAAO+B,QAAQ5B,aAAa,KAAM,KAAM,IAAI2B,KAAqB,IACjElC,EAAK,aAELG,EAASqB,SAASb,KAAOuB,GAAmB,GAC5ClC,EAAK,WACP,EAoBFC,EAAG,QAAQ,KACLH,EAAOe,OAAOR,eAAeC,SAnBtB,MACX,IAAKR,EAAOe,OAAOR,eAAeC,SAAWR,EAAOe,OAAOsB,SAAWrC,EAAOe,OAAOsB,QAAQ7B,QAAS,OACrGJ,GAAc,EACd,MAAMS,EAAOR,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IACjD,GAAId,EAAM,CACR,MAAMyB,EAAQ,EACRC,EAAQvC,EAAOe,OAAOR,eAAeI,cAAcX,EAAQa,GACjEb,EAAOkC,QAAQK,GAAS,EAAGD,EAAOtC,EAAOe,OAAOyB,oBAAoB,EACtE,CACIxC,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOmC,iBAAiB,aAAcjB,EACxC,EASEkB,EACF,IAEFvC,EAAG,WAAW,KACRH,EAAOe,OAAOR,eAAeC,SAV7BR,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOqC,oBAAoB,aAAcnB,EAW3C,IAEFrB,EAAG,4CAA4C,KACzCC,GACF+B,GACF,IAEFhC,EAAG,eAAe,KACZC,GAAeJ,EAAOe,OAAO6B,SAC/BT,GACF,GAEJ,QAESrC"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/hash-navigation.mjs b/docs/vendor/swiper-bundle/modules/hash-navigation.mjs new file mode 100644 index 0000000..cf33420 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/hash-navigation.mjs @@ -0,0 +1,93 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren } from '../shared/utils.mjs'; + +function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); +} + +export { HashNavigation as default }; diff --git a/docs/vendor/swiper-bundle/modules/hash-navigation.scss b/docs/vendor/swiper-bundle/modules/hash-navigation.scss new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/history-element.css b/docs/vendor/swiper-bundle/modules/history-element.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/history-element.min.css b/docs/vendor/swiper-bundle/modules/history-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/history.css b/docs/vendor/swiper-bundle/modules/history.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/history.less b/docs/vendor/swiper-bundle/modules/history.less new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/history.min.css b/docs/vendor/swiper-bundle/modules/history.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/history.min.mjs b/docs/vendor/swiper-bundle/modules/history.min.mjs new file mode 100644 index 0000000..b88cbf9 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/history.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";function History(e){let{swiper:t,extendParams:a,on:s}=e;a({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let r=!1,i={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=getWindow();let a;a=e?new URL(e):t.location;const s=a.pathname.slice(1).split("/").filter((e=>""!==e)),r=s.length;return{key:s[r-2],value:s[r-1]}},n=(e,a)=>{const s=getWindow();if(!r||!t.params.history.enabled)return;let i;i=t.params.url?new URL(t.params.url):s.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${a}"]`):t.slides[a];let n=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let a=t.params.history.root;"/"===a[a.length-1]&&(a=a.slice(0,a.length-1)),n=`${a}/${e?`${e}/`:""}${n}`}else i.pathname.includes(e)||(n=`${e?`${e}/`:""}${n}`);t.params.history.keepQuery&&(n+=i.search);const p=s.history.state;p&&p.value===n||(t.params.history.replaceState?s.history.replaceState({value:n},null,n):s.history.pushState({value:n},null,n))},p=(e,a,s)=>{if(a)for(let r=0,i=t.slides.length;r{i=o(t.params.url),p(t.params.speed,i.value,!1)};s("init",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);r=!0,i=o(t.params.url),i.key||i.value?(p(0,i.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",d)):t.params.history.replaceState||e.addEventListener("popstate",d)}})()})),s("destroy",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();t.params.history.replaceState||e.removeEventListener("popstate",d)})()})),s("transitionEnd _freeModeNoMomentumRelease",(()=>{r&&n(t.params.history.key,t.activeIndex)})),s("slideChange",(()=>{r&&t.params.cssMode&&n(t.params.history.key,t.activeIndex)}))}export{History as default}; +//# sourceMappingURL=history.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/history.min.mjs.map b/docs/vendor/swiper-bundle/modules/history.min.mjs.map new file mode 100644 index 0000000..821c584 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/history.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"history.mjs.mjs","names":["getWindow","History","_ref","swiper","extendParams","on","history","enabled","root","replaceState","key","keepQuery","initialized","paths","slugify","text","toString","replace","getPathValues","urlOverride","window","location","URL","pathArray","pathname","slice","split","filter","part","total","length","value","setHistory","index","params","url","slide","virtual","slidesEl","querySelector","slides","getAttribute","includes","search","currentState","state","pushState","scrollToSlide","speed","runCallbacks","i","getSlideIndex","slideTo","setHistoryPopState","hashNavigation","runCallbacksOnInit","addEventListener","init","removeEventListener","destroy","activeIndex","cssMode"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/history.mjs b/docs/vendor/swiper-bundle/modules/history.mjs new file mode 100644 index 0000000..466c8b8 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/history.mjs @@ -0,0 +1,142 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; + +function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); +} + +export { History as default }; diff --git a/docs/vendor/swiper-bundle/modules/history.scss b/docs/vendor/swiper-bundle/modules/history.scss new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/index.min.mjs b/docs/vendor/swiper-bundle/modules/index.min.mjs new file mode 100644 index 0000000..41b89c3 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/index.min.mjs @@ -0,0 +1,2 @@ +export{default as Virtual}from"./virtual.min.mjs";export{default as Keyboard}from"./keyboard.min.mjs";export{default as Mousewheel}from"./mousewheel.min.mjs";export{default as Navigation}from"./navigation.min.mjs";export{default as Pagination}from"./pagination.min.mjs";export{default as Scrollbar}from"./scrollbar.min.mjs";export{default as Parallax}from"./parallax.min.mjs";export{default as Zoom}from"./zoom.min.mjs";export{default as Controller}from"./controller.min.mjs";export{default as A11y}from"./a11y.min.mjs";export{default as History}from"./history.min.mjs";export{default as HashNavigation}from"./hash-navigation.min.mjs";export{default as Autoplay}from"./autoplay.min.mjs";export{default as Thumbs}from"./thumbs.min.mjs";export{default as FreeMode}from"./free-mode.min.mjs";export{default as Grid}from"./grid.min.mjs";export{default as Manipulation}from"./manipulation.min.mjs";export{default as EffectFade}from"./effect-fade.min.mjs";export{default as EffectCube}from"./effect-cube.min.mjs";export{default as EffectFlip}from"./effect-flip.min.mjs";export{default as EffectCoverflow}from"./effect-coverflow.min.mjs";export{default as EffectCreative}from"./effect-creative.min.mjs";export{default as EffectCards}from"./effect-cards.min.mjs"; +//# sourceMappingURL=index.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/index.min.mjs.map b/docs/vendor/swiper-bundle/modules/index.min.mjs.map new file mode 100644 index 0000000..1492964 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/index.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs.mjs","names":[],"sources":["0"],"mappings":"OAAQ,uBAAyB,2BACzB,wBAA0B,4BAC1B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,yBAA2B,6BAC3B,wBAA0B,4BAC1B,oBAAsB,wBACtB,0BAA4B,8BAC5B,oBAAsB,wBACtB,uBAAyB,2BACzB,8BAAgC,mCAChC,wBAA0B,4BAC1B,sBAAwB,0BACxB,wBAA0B,6BAC1B,oBAAsB,wBACtB,4BAA8B,gCAC9B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,+BAAiC,oCACjC,8BAAgC,mCAChC,2BAA6B"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/index.mjs b/docs/vendor/swiper-bundle/modules/index.mjs new file mode 100644 index 0000000..3186045 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/index.mjs @@ -0,0 +1,23 @@ +export {default as Virtual} from './virtual.mjs'; +export {default as Keyboard} from './keyboard.mjs'; +export {default as Mousewheel} from './mousewheel.mjs'; +export {default as Navigation} from './navigation.mjs'; +export {default as Pagination} from './pagination.mjs'; +export {default as Scrollbar} from './scrollbar.mjs'; +export {default as Parallax} from './parallax.mjs'; +export {default as Zoom} from './zoom.mjs'; +export {default as Controller} from './controller.mjs'; +export {default as A11y} from './a11y.mjs'; +export {default as History} from './history.mjs'; +export {default as HashNavigation} from './hash-navigation.mjs'; +export {default as Autoplay} from './autoplay.mjs'; +export {default as Thumbs} from './thumbs.mjs'; +export {default as FreeMode} from './free-mode.mjs'; +export {default as Grid} from './grid.mjs'; +export {default as Manipulation} from './manipulation.mjs'; +export {default as EffectFade} from './effect-fade.mjs'; +export {default as EffectCube} from './effect-cube.mjs'; +export {default as EffectFlip} from './effect-flip.mjs'; +export {default as EffectCoverflow} from './effect-coverflow.mjs'; +export {default as EffectCreative} from './effect-creative.mjs'; +export {default as EffectCards} from './effect-cards.mjs'; \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/keyboard-element.css b/docs/vendor/swiper-bundle/modules/keyboard-element.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/keyboard-element.min.css b/docs/vendor/swiper-bundle/modules/keyboard-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/keyboard.css b/docs/vendor/swiper-bundle/modules/keyboard.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/keyboard.less b/docs/vendor/swiper-bundle/modules/keyboard.less new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/keyboard.min.css b/docs/vendor/swiper-bundle/modules/keyboard.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/keyboard.min.mjs b/docs/vendor/swiper-bundle/modules/keyboard.min.mjs new file mode 100644 index 0000000..f1d9d2d --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/keyboard.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{a as elementParents,b as elementOffset}from"../shared/utils.min.mjs";function Keyboard(e){let{swiper:t,extendParams:n,on:a,emit:r}=e;const l=getDocument(),i=getWindow();function o(e){if(!t.enabled)return;const{rtlTranslate:n}=t;let a=e;a.originalEvent&&(a=a.originalEvent);const o=a.keyCode||a.charCode,s=t.params.keyboard.pageUpDown,d=s&&33===o,f=s&&34===o,m=37===o,b=39===o,c=38===o,p=40===o;if(!t.allowSlideNext&&(t.isHorizontal()&&b||t.isVertical()&&p||f))return!1;if(!t.allowSlidePrev&&(t.isHorizontal()&&m||t.isVertical()&&c||d))return!1;if(!(a.shiftKey||a.altKey||a.ctrlKey||a.metaKey||l.activeElement&&l.activeElement.nodeName&&("input"===l.activeElement.nodeName.toLowerCase()||"textarea"===l.activeElement.nodeName.toLowerCase()))){if(t.params.keyboard.onlyInViewport&&(d||f||m||b||c||p)){let e=!1;if(elementParents(t.el,`.${t.params.slideClass}, swiper-slide`).length>0&&0===elementParents(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,r=a.clientWidth,l=a.clientHeight,o=i.innerWidth,s=i.innerHeight,d=elementOffset(a);n&&(d.left-=a.scrollLeft);const f=[[d.left,d.top],[d.left+r,d.top],[d.left,d.top+l],[d.left+r,d.top+l]];for(let t=0;t=0&&n[0]<=o&&n[1]>=0&&n[1]<=s){if(0===n[0]&&0===n[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||f||m||b)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((f||b)&&!n||(d||m)&&n)&&t.slideNext(),((d||m)&&!n||(f||b)&&n)&&t.slidePrev()):((d||f||c||p)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(f||p)&&t.slideNext(),(d||c)&&t.slidePrev()),r("keyPress",o)}}function s(){t.keyboard.enabled||(l.addEventListener("keydown",o),t.keyboard.enabled=!0)}function d(){t.keyboard.enabled&&(l.removeEventListener("keydown",o),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},n({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&s()})),a("destroy",(()=>{t.keyboard.enabled&&d()})),Object.assign(t.keyboard,{enable:s,disable:d})}export{Keyboard as default}; +//# sourceMappingURL=keyboard.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/keyboard.min.mjs.map b/docs/vendor/swiper-bundle/modules/keyboard.min.mjs.map new file mode 100644 index 0000000..04ab4eb --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/keyboard.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"keyboard.mjs.mjs","names":["getDocument","getWindow","elementParents","elementOffset","Keyboard","_ref","swiper","extendParams","on","emit","document","window","handle","event","enabled","rtlTranslate","rtl","e","originalEvent","kc","keyCode","charCode","pageUpDown","params","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","allowSlideNext","isHorizontal","isVertical","allowSlidePrev","shiftKey","altKey","ctrlKey","metaKey","activeElement","nodeName","toLowerCase","onlyInViewport","inView","el","slideClass","length","slideActiveClass","swiperWidth","clientWidth","swiperHeight","clientHeight","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","left","scrollLeft","swiperCoord","top","i","point","preventDefault","returnValue","slideNext","slidePrev","enable","addEventListener","disable","removeEventListener","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/keyboard.mjs b/docs/vendor/swiper-bundle/modules/keyboard.mjs new file mode 100644 index 0000000..ba62a46 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/keyboard.mjs @@ -0,0 +1,117 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { a as elementParents, b as elementOffset } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); +} + +export { Keyboard as default }; diff --git a/docs/vendor/swiper-bundle/modules/keyboard.scss b/docs/vendor/swiper-bundle/modules/keyboard.scss new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/manipulation-element.css b/docs/vendor/swiper-bundle/modules/manipulation-element.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/manipulation-element.min.css b/docs/vendor/swiper-bundle/modules/manipulation-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/manipulation.css b/docs/vendor/swiper-bundle/modules/manipulation.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/manipulation.less b/docs/vendor/swiper-bundle/modules/manipulation.less new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/manipulation.min.css b/docs/vendor/swiper-bundle/modules/manipulation.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/manipulation.min.mjs b/docs/vendor/swiper-bundle/modules/manipulation.min.mjs new file mode 100644 index 0000000..1b7832f --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/manipulation.min.mjs @@ -0,0 +1,2 @@ +function appendSlide(e){const l=this,{params:o,slidesEl:i}=l;o.loop&&l.loopDestroy();const t=e=>{if("string"==typeof e){const l=document.createElement("div");l.innerHTML=e,i.append(l.children[0]),l.innerHTML=""}else i.append(e)};if("object"==typeof e&&"length"in e)for(let l=0;l{if("string"==typeof e){const l=document.createElement("div");l.innerHTML=e,t.prepend(l.children[0]),l.innerHTML=""}else t.prepend(e)};if("object"==typeof e&&"length"in e){for(let l=0;l=s)return void o.appendSlide(l);let p=d>e?d+1:d;const r=[];for(let l=s-1;l>=e;l-=1){const e=o.slides[l];e.remove(),r.unshift(e)}if("object"==typeof l&&"length"in l){for(let e=0;ee?d+l.length:d}else n.append(l);for(let e=0;e { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } +} + +function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); +} + +function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); +} + +function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); +} + +export { Manipulation as default }; diff --git a/docs/vendor/swiper-bundle/modules/manipulation.scss b/docs/vendor/swiper-bundle/modules/manipulation.scss new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/mousewheel-element.css b/docs/vendor/swiper-bundle/modules/mousewheel-element.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/mousewheel-element.min.css b/docs/vendor/swiper-bundle/modules/mousewheel-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/mousewheel.css b/docs/vendor/swiper-bundle/modules/mousewheel.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/mousewheel.less b/docs/vendor/swiper-bundle/modules/mousewheel.less new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/mousewheel.min.css b/docs/vendor/swiper-bundle/modules/mousewheel.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/mousewheel.min.mjs b/docs/vendor/swiper-bundle/modules/mousewheel.min.mjs new file mode 100644 index 0000000..312e9b6 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/mousewheel.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{n as nextTick,d as now}from"../shared/utils.min.mjs";function Mousewheel(e){let{swiper:t,extendParams:a,on:s,emit:n}=e;const l=getWindow();let i;a({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let r,o=now();const d=[];function m(){t.enabled&&(t.mouseEntered=!0)}function p(){t.enabled&&(t.mouseEntered=!1)}function u(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&now()-o<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),n("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),n("scroll",e.raw)),o=(new l.Date).getTime(),!1)))}function h(e){let a=e,s=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const l=t.params.mousewheel;t.params.cssMode&&a.preventDefault();let o=t.el;"container"!==t.params.mousewheel.eventsTarget&&(o=document.querySelector(t.params.mousewheel.eventsTarget));const m=o&&o.contains(a.target);if(!t.mouseEntered&&!m&&!l.releaseOnEdges)return!0;a.originalEvent&&(a=a.originalEvent);let p=0;const h=t.rtlTranslate?-1:1,c=function(e){let t=0,a=0,s=0,n=0;return"detail"in e&&(a=e.detail),"wheelDelta"in e&&(a=-e.wheelDelta/120),"wheelDeltaY"in e&&(a=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=a,a=0),s=10*t,n=10*a,"deltaY"in e&&(n=e.deltaY),"deltaX"in e&&(s=e.deltaX),e.shiftKey&&!s&&(s=n,n=0),(s||n)&&e.deltaMode&&(1===e.deltaMode?(s*=40,n*=40):(s*=800,n*=800)),s&&!t&&(t=s<1?-1:1),n&&!a&&(a=n<1?-1:1),{spinX:t,spinY:a,pixelX:s,pixelY:n}}(a);if(l.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(c.pixelX)>Math.abs(c.pixelY)))return!0;p=-c.pixelX*h}else{if(!(Math.abs(c.pixelY)>Math.abs(c.pixelX)))return!0;p=-c.pixelY}else p=Math.abs(c.pixelX)>Math.abs(c.pixelY)?-c.pixelX*h:-c.pixelY;if(0===p)return!0;l.invert&&(p=-p);let w=t.getTranslate()+p*l.sensitivity;if(w>=t.minTranslate()&&(w=t.minTranslate()),w<=t.maxTranslate()&&(w=t.maxTranslate()),s=!!t.params.loop||!(w===t.minTranslate()||w===t.maxTranslate()),s&&t.params.nested&&a.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:now(),delta:Math.abs(p),direction:Math.sign(p)},s=r&&e.time=t.minTranslate()&&(o=t.minTranslate()),o<=t.maxTranslate()&&(o=t.maxTranslate()),t.setTransition(0),t.setTranslate(o),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!m&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(i),i=void 0,d.length>=15&&d.shift();const a=d.length?d[d.length-1]:void 0,s=d[0];if(d.push(e),a&&(e.delta>a.delta||e.direction!==a.direction))d.splice(0);else if(d.length>=15&&e.time-s.time<500&&s.delta-e.delta>=1&&e.delta<=6){const a=p>0?.8:.2;r=e,d.splice(0),i=nextTick((()=>{t.slideToClosest(t.params.speed,!0,void 0,a)}),0)}i||(i=nextTick((()=>{r=e,d.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(s||n("scroll",a),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),l.releaseOnEdges&&(o===t.minTranslate()||o===t.maxTranslate()))return!0}}else{const a={time:now(),delta:Math.abs(p),direction:Math.sign(p),raw:e};d.length>=2&&d.shift();const s=d.length?d[d.length-1]:void 0;if(d.push(a),s?(a.direction!==s.direction||a.delta>s.delta||a.time>s.time+150)&&u(a):u(a),function(e){const a=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&a.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&a.releaseOnEdges)return!0;return!1}(a))return!0}return a.preventDefault?a.preventDefault():a.returnValue=!1,!1}function c(e){let a=t.el;"container"!==t.params.mousewheel.eventsTarget&&(a=document.querySelector(t.params.mousewheel.eventsTarget)),a[e]("mouseenter",m),a[e]("mouseleave",p),a[e]("wheel",h)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",h),!0):!t.mousewheel.enabled&&(c("addEventListener"),t.mousewheel.enabled=!0,!0)}function f(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,h),!0):!!t.mousewheel.enabled&&(c("removeEventListener"),t.mousewheel.enabled=!1,!0)}s("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&f(),t.params.mousewheel.enabled&&w()})),s("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&f()})),Object.assign(t.mousewheel,{enable:w,disable:f})}export{Mousewheel as default}; +//# sourceMappingURL=mousewheel.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/mousewheel.min.mjs.map b/docs/vendor/swiper-bundle/modules/mousewheel.min.mjs.map new file mode 100644 index 0000000..678fdba --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/mousewheel.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"mousewheel.mjs.mjs","names":["getWindow","nextTick","now","Mousewheel","_ref","swiper","extendParams","on","emit","window","timeout","mousewheel","enabled","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","params","delta","direction","isEnd","loop","animating","slideNext","raw","isBeginning","slidePrev","Date","getTime","handle","event","e","disableParentSwiper","target","closest","cssMode","preventDefault","targetEl","el","document","querySelector","targetElContainsTarget","contains","originalEvent","rtlFactor","rtlTranslate","data","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","shiftKey","deltaMode","spinX","spinY","pixelX","pixelY","normalize","isHorizontal","Math","abs","positions","getTranslate","minTranslate","maxTranslate","nested","stopPropagation","freeMode","time","sign","ignoreWheelEvents","undefined","position","wasBeginning","wasEnd","setTransition","setTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","loopFix","byMousewheel","sticky","clearTimeout","length","shift","prevEvent","firstEvent","push","splice","snapToThreshold","slideToClosest","speed","autoplay","autoplayDisableOnInteraction","stop","releaseScroll","returnValue","events","method","enable","wrapperEl","removeEventListener","disable","addEventListener","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/mousewheel.mjs b/docs/vendor/swiper-bundle/modules/mousewheel.mjs new file mode 100644 index 0000000..28c4d2e --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/mousewheel.mjs @@ -0,0 +1,393 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { n as nextTick, d as now } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); +} + +export { Mousewheel as default }; diff --git a/docs/vendor/swiper-bundle/modules/mousewheel.scss b/docs/vendor/swiper-bundle/modules/mousewheel.scss new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/navigation-element.css b/docs/vendor/swiper-bundle/modules/navigation-element.css new file mode 100644 index 0000000..46a2918 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/navigation-element.css @@ -0,0 +1,63 @@ +:host { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start *//* Navigation font end */ diff --git a/docs/vendor/swiper-bundle/modules/navigation-element.min.css b/docs/vendor/swiper-bundle/modules/navigation-element.min.css new file mode 100644 index 0000000..70d1870 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/navigation-element.min.css @@ -0,0 +1 @@ +:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/navigation.css b/docs/vendor/swiper-bundle/modules/navigation.css new file mode 100644 index 0000000..a287b8a --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/navigation.css @@ -0,0 +1,86 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +/* Navigation font end */ diff --git a/docs/vendor/swiper-bundle/modules/navigation.less b/docs/vendor/swiper-bundle/modules/navigation.less new file mode 100644 index 0000000..5243fe6 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/navigation.less @@ -0,0 +1,86 @@ +@import url('../swiper-vars.less'); + +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + } + .swiper-rtl & svg { + transform: rotate(180deg); + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev, +.swiper-button-next { + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +/* Navigation font end */ diff --git a/docs/vendor/swiper-bundle/modules/navigation.min.css b/docs/vendor/swiper-bundle/modules/navigation.min.css new file mode 100644 index 0000000..d93c5d8 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/navigation.min.css @@ -0,0 +1 @@ +:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/navigation.min.mjs b/docs/vendor/swiper-bundle/modules/navigation.min.mjs new file mode 100644 index 0000000..c8880dd --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/navigation.min.mjs @@ -0,0 +1,2 @@ +import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{m as makeElementsArray}from"../shared/utils.min.mjs";function Navigation(a){let{swiper:e,extendParams:n,on:i,emit:t}=a;function s(a){let n;return a&&"string"==typeof a&&e.isElement&&(n=e.el.querySelector(a),n)?n:(a&&("string"==typeof a&&(n=[...document.querySelectorAll(a)]),e.params.uniqueNavElements&&"string"==typeof a&&n&&n.length>1&&1===e.el.querySelectorAll(a).length?n=e.el.querySelector(a):n&&1===n.length&&(n=n[0])),a&&!n?a:n)}function l(a,n){const i=e.params.navigation;(a=makeElementsArray(a)).forEach((a=>{a&&(a.classList[n?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===a.tagName&&(a.disabled=n),e.params.watchOverflow&&e.enabled&&a.classList[e.isLocked?"add":"remove"](i.lockClass))}))}function r(){const{nextEl:a,prevEl:n}=e.navigation;if(e.params.loop)return l(n,!1),void l(a,!1);l(n,e.isBeginning&&!e.params.rewind),l(a,e.isEnd&&!e.params.rewind)}function o(a){a.preventDefault(),(!e.isBeginning||e.params.loop||e.params.rewind)&&(e.slidePrev(),t("navigationPrev"))}function d(a){a.preventDefault(),(!e.isEnd||e.params.loop||e.params.rewind)&&(e.slideNext(),t("navigationNext"))}function c(){const a=e.params.navigation;if(e.params.navigation=createElementIfNotDefined(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!a.nextEl&&!a.prevEl)return;let n=s(a.nextEl),i=s(a.prevEl);Object.assign(e.navigation,{nextEl:n,prevEl:i}),n=makeElementsArray(n),i=makeElementsArray(i);const t=(n,i)=>{n&&n.addEventListener("click","next"===i?d:o),!e.enabled&&n&&n.classList.add(...a.lockClass.split(" "))};n.forEach((a=>t(a,"next"))),i.forEach((a=>t(a,"prev")))}function m(){let{nextEl:a,prevEl:n}=e.navigation;a=makeElementsArray(a),n=makeElementsArray(n);const i=(a,n)=>{a.removeEventListener("click","next"===n?d:o),a.classList.remove(...e.params.navigation.disabledClass.split(" "))};a.forEach((a=>i(a,"next"))),n.forEach((a=>i(a,"prev")))}n({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,prevEl:null},i("init",(()=>{!1===e.params.navigation.enabled?p():(c(),r())})),i("toEdge fromEdge lock unlock",(()=>{r()})),i("destroy",(()=>{m()})),i("enable disable",(()=>{let{nextEl:a,prevEl:n}=e.navigation;a=makeElementsArray(a),n=makeElementsArray(n),e.enabled?r():[...a,...n].filter((a=>!!a)).forEach((a=>a.classList.add(e.params.navigation.lockClass)))})),i("click",((a,n)=>{let{nextEl:i,prevEl:s}=e.navigation;i=makeElementsArray(i),s=makeElementsArray(s);const l=n.target;let r=s.includes(l)||i.includes(l);if(e.isElement&&!r){const a=n.path||n.composedPath&&n.composedPath();a&&(r=a.find((a=>i.includes(a)||s.includes(a))))}if(e.params.navigation.hideOnClick&&!r){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===l||e.pagination.el.contains(l)))return;let a;i.length?a=i[0].classList.contains(e.params.navigation.hiddenClass):s.length&&(a=s[0].classList.contains(e.params.navigation.hiddenClass)),t(!0===a?"navigationShow":"navigationHide"),[...i,...s].filter((a=>!!a)).forEach((a=>a.classList.toggle(e.params.navigation.hiddenClass)))}}));const p=()=>{e.el.classList.add(...e.params.navigation.navigationDisabledClass.split(" ")),m()};Object.assign(e.navigation,{enable:()=>{e.el.classList.remove(...e.params.navigation.navigationDisabledClass.split(" ")),c(),r()},disable:p,update:r,init:c,destroy:m})}export{Navigation as default}; +//# sourceMappingURL=navigation.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/navigation.min.mjs.map b/docs/vendor/swiper-bundle/modules/navigation.min.mjs.map new file mode 100644 index 0000000..8b5bbb2 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"navigation.mjs.mjs","names":["createElementIfNotDefined","makeElementsArray","Navigation","_ref","swiper","extendParams","on","emit","getEl","el","res","isElement","querySelector","document","querySelectorAll","params","uniqueNavElements","length","toggleEl","disabled","navigation","forEach","subEl","classList","disabledClass","split","tagName","watchOverflow","enabled","isLocked","lockClass","update","nextEl","prevEl","loop","isBeginning","rewind","isEnd","onPrevClick","e","preventDefault","slidePrev","onNextClick","slideNext","init","originalParams","Object","assign","initButton","dir","addEventListener","add","destroy","destroyButton","removeEventListener","remove","hideOnClick","hiddenClass","navigationDisabledClass","disable","filter","_s","targetEl","target","targetIsButton","includes","path","composedPath","find","pathEl","pagination","clickable","contains","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/navigation.mjs b/docs/vendor/swiper-bundle/modules/navigation.mjs new file mode 100644 index 0000000..3c23caf --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/navigation.mjs @@ -0,0 +1,200 @@ +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { m as makeElementsArray } from '../shared/utils.mjs'; + +function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } else if (res && res.length === 1) { + res = res[0]; + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); + if (swiper.isElement && !targetIsButton) { + const path = e.path || e.composedPath && e.composedPath(); + if (path) { + targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); + } + } + if (swiper.params.navigation.hideOnClick && !targetIsButton) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); +} + +export { Navigation as default }; diff --git a/docs/vendor/swiper-bundle/modules/navigation.scss b/docs/vendor/swiper-bundle/modules/navigation.scss new file mode 100644 index 0000000..f0ab8ce --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/navigation.scss @@ -0,0 +1,87 @@ +@import '../swiper-vars.scss'; +@at-root { + :root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ + } +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + } + .swiper-rtl & svg { + transform: rotate(180deg); + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev, +.swiper-button-next { + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; + &:after { + content: 'next'; + } +} +/* Navigation font end */ diff --git a/docs/vendor/swiper-bundle/modules/pagination-element.css b/docs/vendor/swiper-bundle/modules/pagination-element.css new file mode 100644 index 0000000..cae824f --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/pagination-element.css @@ -0,0 +1,184 @@ +:host { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} diff --git a/docs/vendor/swiper-bundle/modules/pagination-element.min.css b/docs/vendor/swiper-bundle/modules/pagination-element.min.css new file mode 100644 index 0000000..398a345 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/pagination-element.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/pagination.css b/docs/vendor/swiper-bundle/modules/pagination.css new file mode 100644 index 0000000..20bda39 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/pagination.css @@ -0,0 +1,184 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} diff --git a/docs/vendor/swiper-bundle/modules/pagination.less b/docs/vendor/swiper-bundle/modules/pagination.less new file mode 100644 index 0000000..202e40c --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/pagination.less @@ -0,0 +1,187 @@ +@import url('../swiper-vars.less'); + +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + button& { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/docs/vendor/swiper-bundle/modules/pagination.min.css b/docs/vendor/swiper-bundle/modules/pagination.min.css new file mode 100644 index 0000000..398a345 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/pagination.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/pagination.min.mjs b/docs/vendor/swiper-bundle/modules/pagination.min.mjs new file mode 100644 index 0000000..0db352f --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/pagination.min.mjs @@ -0,0 +1,2 @@ +import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{m as makeElementsArray,f as elementOuterSize,h as elementIndex,a as elementParents}from"../shared/utils.min.mjs";function Pagination(e){let{swiper:a,extendParams:s,on:l,emit:t}=e;const i="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${i}-bullet`,bulletActiveClass:`${i}-bullet-active`,modifierClass:`${i}-`,currentClass:`${i}-current`,totalClass:`${i}-total`,hiddenClass:`${i}-hidden`,progressbarFillClass:`${i}-progressbar-fill`,progressbarOppositeClass:`${i}-progressbar-opposite`,clickableClass:`${i}-clickable`,lockClass:`${i}-lock`,horizontalClass:`${i}-horizontal`,verticalClass:`${i}-vertical`,paginationDisabledClass:`${i}-disabled`}}),a.pagination={el:null,bullets:[]};let r=0;function o(){return!a.params.pagination.el||!a.pagination.el||Array.isArray(a.pagination.el)&&0===a.pagination.el.length}function p(e,s){const{bulletActiveClass:l}=a.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${l}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${l}-${s}-${s}`))}function c(e){const s=e.target.closest(classesToSelector(a.params.pagination.bulletClass));if(!s)return;e.preventDefault();const l=elementIndex(s)*a.params.slidesPerGroup;if(a.params.loop){if(a.realIndex===l)return;a.slideToLoop(l)}else a.slideTo(l)}function d(){const e=a.rtl,s=a.params.pagination;if(o())return;let l,i,c=a.pagination.el;c=makeElementsArray(c);const d=a.virtual&&a.params.virtual.enabled?a.virtual.slides.length:a.slides.length,m=a.params.loop?Math.ceil(d/a.params.slidesPerGroup):a.snapGrid.length;if(a.params.loop?(i=a.previousRealIndex||0,l=a.params.slidesPerGroup>1?Math.floor(a.realIndex/a.params.slidesPerGroup):a.realIndex):void 0!==a.snapIndex?(l=a.snapIndex,i=a.previousSnapIndex):(i=a.previousIndex||0,l=a.activeIndex||0),"bullets"===s.type&&a.pagination.bullets&&a.pagination.bullets.length>0){const t=a.pagination.bullets;let o,d,m;if(s.dynamicBullets&&(n=elementOuterSize(t[0],a.isHorizontal()?"width":"height",!0),c.forEach((e=>{e.style[a.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==i&&(r+=l-(i||0),r>s.dynamicMainBullets-1?r=s.dynamicMainBullets-1:r<0&&(r=0)),o=Math.max(l-r,0),d=o+(Math.min(t.length,s.dynamicMainBullets)-1),m=(d+o)/2),t.forEach((e=>{const a=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...a)})),c.length>1)t.forEach((e=>{const t=elementIndex(e);t===l?e.classList.add(...s.bulletActiveClass.split(" ")):a.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(t>=o&&t<=d&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),t===o&&p(e,"prev"),t===d&&p(e,"next"))}));else{const e=t[l];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),a.isElement&&t.forEach(((e,a)=>{e.setAttribute("part",a===l?"bullet-active":"bullet")})),s.dynamicBullets){const e=t[o],a=t[d];for(let e=o;e<=d;e+=1)t[e]&&t[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));p(e,"prev"),p(a,"next")}}if(s.dynamicBullets){const l=Math.min(t.length,s.dynamicMainBullets+4),i=(n*l-n)/2-m*n,r=e?"right":"left";t.forEach((e=>{e.style[a.isHorizontal()?r:"top"]=`${i}px`}))}}c.forEach(((e,i)=>{if("fraction"===s.type&&(e.querySelectorAll(classesToSelector(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(l+1)})),e.querySelectorAll(classesToSelector(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let t;t=s.progressbarOpposite?a.isHorizontal()?"vertical":"horizontal":a.isHorizontal()?"horizontal":"vertical";const i=(l+1)/m;let n=1,r=1;"horizontal"===t?n=i:r=i,e.querySelectorAll(classesToSelector(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${r})`,e.style.transitionDuration=`${a.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(a,l+1,m),0===i&&t("paginationRender",e)):(0===i&&t("paginationRender",e),t("paginationUpdate",e)),a.params.watchOverflow&&a.enabled&&e.classList[a.isLocked?"add":"remove"](s.lockClass)}))}function m(){const e=a.params.pagination;if(o())return;const s=a.virtual&&a.params.virtual.enabled?a.virtual.slides.length:a.grid&&a.params.grid.rows>1?a.slides.length/Math.ceil(a.params.grid.rows):a.slides.length;let l=a.pagination.el;l=makeElementsArray(l);let i="";if("bullets"===e.type){let l=a.params.loop?Math.ceil(s/a.params.slidesPerGroup):a.snapGrid.length;a.params.freeMode&&a.params.freeMode.enabled&&l>s&&(l=s);for(let s=0;s`}"fraction"===e.type&&(i=e.renderFraction?e.renderFraction.call(a,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(i=e.renderProgressbar?e.renderProgressbar.call(a,e.progressbarFillClass):``),a.pagination.bullets=[],l.forEach((s=>{"custom"!==e.type&&(s.innerHTML=i||""),"bullets"===e.type&&a.pagination.bullets.push(...s.querySelectorAll(classesToSelector(e.bulletClass)))})),"custom"!==e.type&&t("paginationRender",l[0])}function u(){a.params.pagination=createElementIfNotDefined(a,a.originalParams.pagination,a.params.pagination,{el:"swiper-pagination"});const e=a.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&a.isElement&&(s=a.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(a.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...a.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>elementParents(e,".swiper")[0]===a.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(a.pagination,{el:s}),s=makeElementsArray(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(a.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),r=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),a.enabled||s.classList.add(e.lockClass)})))}function g(){const e=a.params.pagination;if(o())return;let s=a.pagination.el;s&&(s=makeElementsArray(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(a.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))}))),a.pagination.bullets&&a.pagination.bullets.forEach((a=>a.classList.remove(...e.bulletActiveClass.split(" "))))}l("changeDirection",(()=>{if(!a.pagination||!a.pagination.el)return;const e=a.params.pagination;let{el:s}=a.pagination;s=makeElementsArray(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(a.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),l("init",(()=>{!1===a.params.pagination.enabled?b():(u(),m(),d())})),l("activeIndexChange",(()=>{void 0===a.snapIndex&&d()})),l("snapIndexChange",(()=>{d()})),l("snapGridLengthChange",(()=>{m(),d()})),l("destroy",(()=>{g()})),l("enable disable",(()=>{let{el:e}=a.pagination;e&&(e=makeElementsArray(e),e.forEach((e=>e.classList[a.enabled?"remove":"add"](a.params.pagination.lockClass))))})),l("lock unlock",(()=>{d()})),l("click",((e,s)=>{const l=s.target,i=makeElementsArray(a.pagination.el);if(a.params.pagination.el&&a.params.pagination.hideOnClick&&i&&i.length>0&&!l.classList.contains(a.params.pagination.bulletClass)){if(a.navigation&&(a.navigation.nextEl&&l===a.navigation.nextEl||a.navigation.prevEl&&l===a.navigation.prevEl))return;const e=i[0].classList.contains(a.params.pagination.hiddenClass);t(!0===e?"paginationShow":"paginationHide"),i.forEach((e=>e.classList.toggle(a.params.pagination.hiddenClass)))}}));const b=()=>{a.el.classList.add(a.params.pagination.paginationDisabledClass);let{el:e}=a.pagination;e&&(e=makeElementsArray(e),e.forEach((e=>e.classList.add(a.params.pagination.paginationDisabledClass)))),g()};Object.assign(a.pagination,{enable:()=>{a.el.classList.remove(a.params.pagination.paginationDisabledClass);let{el:e}=a.pagination;e&&(e=makeElementsArray(e),e.forEach((e=>e.classList.remove(a.params.pagination.paginationDisabledClass)))),u(),m(),d()},disable:b,render:m,update:d,init:u,destroy:g})}export{Pagination as default}; +//# sourceMappingURL=pagination.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/pagination.min.mjs.map b/docs/vendor/swiper-bundle/modules/pagination.min.mjs.map new file mode 100644 index 0000000..eee8355 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/pagination.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"pagination.mjs.mjs","names":["classesToSelector","createElementIfNotDefined","makeElementsArray","elementOuterSize","elementIndex","elementParents","Pagination","_ref","swiper","extendParams","on","emit","pfx","bulletSize","pagination","el","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","type","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","params","Array","isArray","length","setSideBullets","bulletEl","position","classList","add","onBulletClick","e","target","closest","preventDefault","index","slidesPerGroup","loop","realIndex","slideToLoop","slideTo","update","rtl","current","previousIndex","slidesLength","virtual","enabled","slides","total","Math","ceil","snapGrid","previousRealIndex","floor","snapIndex","previousSnapIndex","activeIndex","firstIndex","lastIndex","midIndex","isHorizontal","forEach","subEl","style","undefined","max","min","classesToRemove","map","suffix","s","includes","split","flat","remove","bullet","bulletIndex","isElement","setAttribute","firstDisplayedBullet","lastDisplayedBullet","i","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","querySelectorAll","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transform","transitionDuration","speed","innerHTML","watchOverflow","isLocked","render","grid","rows","paginationHTML","numberOfBullets","freeMode","call","push","init","originalParams","querySelector","document","uniqueNavElements","filter","Object","assign","addEventListener","destroy","removeEventListener","disable","_s","targetEl","contains","navigation","nextEl","prevEl","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/pagination.mjs b/docs/vendor/swiper-bundle/modules/pagination.mjs new file mode 100644 index 0000000..e38786d --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/pagination.mjs @@ -0,0 +1,443 @@ +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs'; + +function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); +} + +export { Pagination as default }; diff --git a/docs/vendor/swiper-bundle/modules/pagination.scss b/docs/vendor/swiper-bundle/modules/pagination.scss new file mode 100644 index 0000000..5595484 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/pagination.scss @@ -0,0 +1,188 @@ +@import '../swiper-vars.scss'; +@at-root { + :root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ + } +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + @at-root button#{&} { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/docs/vendor/swiper-bundle/modules/parallax-element.css b/docs/vendor/swiper-bundle/modules/parallax-element.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/parallax-element.min.css b/docs/vendor/swiper-bundle/modules/parallax-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/parallax.css b/docs/vendor/swiper-bundle/modules/parallax.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/parallax.less b/docs/vendor/swiper-bundle/modules/parallax.less new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/parallax.min.css b/docs/vendor/swiper-bundle/modules/parallax.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/parallax.min.mjs b/docs/vendor/swiper-bundle/modules/parallax.min.mjs new file mode 100644 index 0000000..b70fbd0 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/parallax.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren}from"../shared/utils.min.mjs";function Parallax(a){let{swiper:e,extendParams:t,on:l}=a;t({parallax:{enabled:!1}});const r="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",s=(a,t)=>{const{rtl:l}=e,r=l?-1:1,s=a.getAttribute("data-swiper-parallax")||"0";let i=a.getAttribute("data-swiper-parallax-x"),p=a.getAttribute("data-swiper-parallax-y");const n=a.getAttribute("data-swiper-parallax-scale"),o=a.getAttribute("data-swiper-parallax-opacity"),d=a.getAttribute("data-swiper-parallax-rotate");if(i||p?(i=i||"0",p=p||"0"):e.isHorizontal()?(i=s,p="0"):(p=s,i="0"),i=i.indexOf("%")>=0?parseInt(i,10)*t*r+"%":i*t*r+"px",p=p.indexOf("%")>=0?parseInt(p,10)*t+"%":p*t+"px",null!=o){const e=o-(o-1)*(1-Math.abs(t));a.style.opacity=e}let x=`translate3d(${i}, ${p}, 0px)`;if(null!=n){x+=` scale(${n-(n-1)*(1-Math.abs(t))})`}if(d&&null!=d){x+=` rotate(${d*t*-1}deg)`}a.style.transform=x},i=()=>{const{el:a,slides:t,progress:l,snapGrid:i,isElement:p}=e,n=elementChildren(a,r);e.isElement&&n.push(...elementChildren(e.hostEl,r)),n.forEach((a=>{s(a,l)})),t.forEach(((a,t)=>{let p=a.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(p+=Math.ceil(t/2)-l*(i.length-1)),p=Math.min(Math.max(p,-1),1),a.querySelectorAll(`${r}, [data-swiper-parallax-rotate]`).forEach((a=>{s(a,p)}))}))};l("beforeInit",(()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)})),l("init",(()=>{e.params.parallax.enabled&&i()})),l("setTranslate",(()=>{e.params.parallax.enabled&&i()})),l("setTransition",((a,t)=>{e.params.parallax.enabled&&function(a){void 0===a&&(a=e.params.speed);const{el:t,hostEl:l}=e,s=[...t.querySelectorAll(r)];e.isElement&&s.push(...l.querySelectorAll(r)),s.forEach((e=>{let t=parseInt(e.getAttribute("data-swiper-parallax-duration"),10)||a;0===a&&(t=0),e.style.transitionDuration=`${t}ms`}))}(t)}))}export{Parallax as default}; +//# sourceMappingURL=parallax.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/parallax.min.mjs.map b/docs/vendor/swiper-bundle/modules/parallax.min.mjs.map new file mode 100644 index 0000000..395322a --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/parallax.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"parallax.mjs.mjs","names":["elementChildren","Parallax","_ref","swiper","extendParams","on","parallax","enabled","elementsSelector","setTransform","el","progress","rtl","rtlFactor","p","getAttribute","x","y","scale","opacity","rotate","isHorizontal","indexOf","parseInt","currentOpacity","Math","abs","style","transform","setTranslate","slides","snapGrid","isElement","elements","push","hostEl","forEach","subEl","slideEl","slideIndex","slideProgress","params","slidesPerGroup","slidesPerView","ceil","length","min","max","querySelectorAll","watchSlidesProgress","originalParams","_swiper","duration","speed","parallaxEl","parallaxDuration","transitionDuration","setTransition"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/parallax.mjs b/docs/vendor/swiper-bundle/modules/parallax.mjs new file mode 100644 index 0000000..1f467de --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/parallax.mjs @@ -0,0 +1,124 @@ +import { e as elementChildren } from '../shared/utils.mjs'; + +function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); +} + +export { Parallax as default }; diff --git a/docs/vendor/swiper-bundle/modules/parallax.scss b/docs/vendor/swiper-bundle/modules/parallax.scss new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/scrollbar-element.css b/docs/vendor/swiper-bundle/modules/scrollbar-element.css new file mode 100644 index 0000000..b6b755e --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/scrollbar-element.css @@ -0,0 +1,58 @@ +:host { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/docs/vendor/swiper-bundle/modules/scrollbar-element.min.css b/docs/vendor/swiper-bundle/modules/scrollbar-element.min.css new file mode 100644 index 0000000..dc9860f --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/scrollbar-element.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/scrollbar.css b/docs/vendor/swiper-bundle/modules/scrollbar.css new file mode 100644 index 0000000..678451c --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/scrollbar.css @@ -0,0 +1,58 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/docs/vendor/swiper-bundle/modules/scrollbar.less b/docs/vendor/swiper-bundle/modules/scrollbar.less new file mode 100644 index 0000000..4920d9b --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/scrollbar.less @@ -0,0 +1,59 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + -ms-touch-action: none; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/docs/vendor/swiper-bundle/modules/scrollbar.min.css b/docs/vendor/swiper-bundle/modules/scrollbar.min.css new file mode 100644 index 0000000..dc9860f --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/scrollbar.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/scrollbar.min.mjs b/docs/vendor/swiper-bundle/modules/scrollbar.min.mjs new file mode 100644 index 0000000..a190521 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/scrollbar.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{m as makeElementsArray,i as classesToTokens,c as createElement,n as nextTick,b as elementOffset}from"../shared/utils.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";function Scrollbar(s){let{swiper:l,extendParams:e,on:a,emit:r}=s;const t=getDocument();let o,n,i,c,p=!1,m=null,d=null;function b(){if(!l.params.scrollbar.el||!l.scrollbar.el)return;const{scrollbar:s,rtlTranslate:e}=l,{dragEl:a,el:r}=s,t=l.params.scrollbar,o=l.params.loop?l.progressLoop:l.progress;let c=n,p=(i-n)*o;e?(p=-p,p>0?(c=n-p,p=0):-p+n>i&&(c=i+p)):p<0?(c=n+p,p=0):p+n>i&&(c=i-p),l.isHorizontal()?(a.style.transform=`translate3d(${p}px, 0, 0)`,a.style.width=`${c}px`):(a.style.transform=`translate3d(0px, ${p}px, 0)`,a.style.height=`${c}px`),t.hide&&(clearTimeout(m),r.style.opacity=1,m=setTimeout((()=>{r.style.opacity=0,r.style.transitionDuration="400ms"}),1e3))}function u(){if(!l.params.scrollbar.el||!l.scrollbar.el)return;const{scrollbar:s}=l,{dragEl:e,el:a}=s;e.style.width="",e.style.height="",i=l.isHorizontal()?a.offsetWidth:a.offsetHeight,c=l.size/(l.virtualSize+l.params.slidesOffsetBefore-(l.params.centeredSlides?l.snapGrid[0]:0)),n="auto"===l.params.scrollbar.dragSize?i*c:parseInt(l.params.scrollbar.dragSize,10),l.isHorizontal()?e.style.width=`${n}px`:e.style.height=`${n}px`,a.style.display=c>=1?"none":"",l.params.scrollbar.hide&&(a.style.opacity=0),l.params.watchOverflow&&l.enabled&&s.el.classList[l.isLocked?"add":"remove"](l.params.scrollbar.lockClass)}function f(s){return l.isHorizontal()?s.clientX:s.clientY}function g(s){const{scrollbar:e,rtlTranslate:a}=l,{el:r}=e;let t;t=(f(s)-elementOffset(r)[l.isHorizontal()?"left":"top"]-(null!==o?o:n/2))/(i-n),t=Math.max(Math.min(t,1),0),a&&(t=1-t);const c=l.minTranslate()+(l.maxTranslate()-l.minTranslate())*t;l.updateProgress(c),l.setTranslate(c),l.updateActiveIndex(),l.updateSlidesClasses()}function y(s){const e=l.params.scrollbar,{scrollbar:a,wrapperEl:t}=l,{el:n,dragEl:i}=a;p=!0,o=s.target===i?f(s)-s.target.getBoundingClientRect()[l.isHorizontal()?"left":"top"]:null,s.preventDefault(),s.stopPropagation(),t.style.transitionDuration="100ms",i.style.transitionDuration="100ms",g(s),clearTimeout(d),n.style.transitionDuration="0ms",e.hide&&(n.style.opacity=1),l.params.cssMode&&(l.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",s)}function h(s){const{scrollbar:e,wrapperEl:a}=l,{el:t,dragEl:o}=e;p&&(s.preventDefault&&s.cancelable?s.preventDefault():s.returnValue=!1,g(s),a.style.transitionDuration="0ms",t.style.transitionDuration="0ms",o.style.transitionDuration="0ms",r("scrollbarDragMove",s))}function T(s){const e=l.params.scrollbar,{scrollbar:a,wrapperEl:t}=l,{el:o}=a;p&&(p=!1,l.params.cssMode&&(l.wrapperEl.style["scroll-snap-type"]="",t.style.transitionDuration=""),e.hide&&(clearTimeout(d),d=nextTick((()=>{o.style.opacity=0,o.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",s),e.snapOnRelease&&l.slideToClosest())}function v(s){const{scrollbar:e,params:a}=l,r=e.el;if(!r)return;const o=r,n=!!a.passiveListeners&&{passive:!1,capture:!1},i=!!a.passiveListeners&&{passive:!0,capture:!1};if(!o)return;const c="on"===s?"addEventListener":"removeEventListener";o[c]("pointerdown",y,n),t[c]("pointermove",h,n),t[c]("pointerup",T,i)}function D(){const{scrollbar:s,el:e}=l;l.params.scrollbar=createElementIfNotDefined(l,l.originalParams.scrollbar,l.params.scrollbar,{el:"swiper-scrollbar"});const a=l.params.scrollbar;if(!a.el)return;let r,o;if("string"==typeof a.el&&l.isElement&&(r=l.el.querySelector(a.el)),r||"string"!=typeof a.el)r||(r=a.el);else if(r=t.querySelectorAll(a.el),!r.length)return;l.params.uniqueNavElements&&"string"==typeof a.el&&r.length>1&&1===e.querySelectorAll(a.el).length&&(r=e.querySelector(a.el)),r.length>0&&(r=r[0]),r.classList.add(l.isHorizontal()?a.horizontalClass:a.verticalClass),r&&(o=r.querySelector(classesToSelector(l.params.scrollbar.dragClass)),o||(o=createElement("div",l.params.scrollbar.dragClass),r.append(o))),Object.assign(s,{el:r,dragEl:o}),a.draggable&&l.params.scrollbar.el&&l.scrollbar.el&&v("on"),r&&r.classList[l.enabled?"remove":"add"](...classesToTokens(l.params.scrollbar.lockClass))}function C(){const s=l.params.scrollbar,e=l.scrollbar.el;e&&e.classList.remove(...classesToTokens(l.isHorizontal()?s.horizontalClass:s.verticalClass)),l.params.scrollbar.el&&l.scrollbar.el&&v("off")}e({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),l.scrollbar={el:null,dragEl:null},a("changeDirection",(()=>{if(!l.scrollbar||!l.scrollbar.el)return;const s=l.params.scrollbar;let{el:e}=l.scrollbar;e=makeElementsArray(e),e.forEach((e=>{e.classList.remove(s.horizontalClass,s.verticalClass),e.classList.add(l.isHorizontal()?s.horizontalClass:s.verticalClass)}))})),a("init",(()=>{!1===l.params.scrollbar.enabled?E():(D(),u(),b())})),a("update resize observerUpdate lock unlock changeDirection",(()=>{u()})),a("setTranslate",(()=>{b()})),a("setTransition",((s,e)=>{!function(s){l.params.scrollbar.el&&l.scrollbar.el&&(l.scrollbar.dragEl.style.transitionDuration=`${s}ms`)}(e)})),a("enable disable",(()=>{const{el:s}=l.scrollbar;s&&s.classList[l.enabled?"remove":"add"](...classesToTokens(l.params.scrollbar.lockClass))})),a("destroy",(()=>{C()}));const E=()=>{l.el.classList.add(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),l.scrollbar.el&&l.scrollbar.el.classList.add(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),C()};Object.assign(l.scrollbar,{enable:()=>{l.el.classList.remove(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),l.scrollbar.el&&l.scrollbar.el.classList.remove(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),D(),u(),b()},disable:E,updateSize:u,setTranslate:b,init:D,destroy:C})}export{Scrollbar as default}; +//# sourceMappingURL=scrollbar.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/scrollbar.min.mjs.map b/docs/vendor/swiper-bundle/modules/scrollbar.min.mjs.map new file mode 100644 index 0000000..84930e3 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/scrollbar.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"scrollbar.mjs.mjs","names":["getDocument","makeElementsArray","classesToTokens","createElement","nextTick","elementOffset","createElementIfNotDefined","classesToSelector","Scrollbar","_ref","swiper","extendParams","on","emit","document","dragStartPos","dragSize","trackSize","divider","isTouched","timeout","dragTimeout","setTranslate","params","scrollbar","el","rtlTranslate","rtl","dragEl","progress","loop","progressLoop","newSize","newPos","isHorizontal","style","transform","width","height","hide","clearTimeout","opacity","setTimeout","transitionDuration","updateSize","offsetWidth","offsetHeight","size","virtualSize","slidesOffsetBefore","centeredSlides","snapGrid","parseInt","display","watchOverflow","enabled","classList","isLocked","lockClass","getPointerPosition","e","clientX","clientY","setDragPosition","positionRatio","Math","max","min","position","minTranslate","maxTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","onDragStart","wrapperEl","target","getBoundingClientRect","preventDefault","stopPropagation","cssMode","onDragMove","cancelable","returnValue","onDragEnd","snapOnRelease","slideToClosest","events","method","activeListener","passiveListeners","passive","capture","passiveListener","eventMethod","init","swiperEl","originalParams","isElement","querySelector","querySelectorAll","length","uniqueNavElements","add","horizontalClass","verticalClass","dragClass","append","Object","assign","draggable","destroy","remove","scrollbarDisabledClass","forEach","subEl","disable","_s","duration","setTransition","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/scrollbar.mjs b/docs/vendor/swiper-bundle/modules/scrollbar.mjs new file mode 100644 index 0000000..052fee6 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/scrollbar.mjs @@ -0,0 +1,366 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; + +function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); +} + +export { Scrollbar as default }; diff --git a/docs/vendor/swiper-bundle/modules/scrollbar.scss b/docs/vendor/swiper-bundle/modules/scrollbar.scss new file mode 100644 index 0000000..93882d3 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/scrollbar.scss @@ -0,0 +1,61 @@ +@at-root { + :root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ + } +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + -ms-touch-action: none; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/docs/vendor/swiper-bundle/modules/thumbs-element.css b/docs/vendor/swiper-bundle/modules/thumbs-element.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/thumbs-element.min.css b/docs/vendor/swiper-bundle/modules/thumbs-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/thumbs.css b/docs/vendor/swiper-bundle/modules/thumbs.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/thumbs.less b/docs/vendor/swiper-bundle/modules/thumbs.less new file mode 100644 index 0000000..9eaa1b3 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/thumbs.less @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/docs/vendor/swiper-bundle/modules/thumbs.min.css b/docs/vendor/swiper-bundle/modules/thumbs.min.css new file mode 100644 index 0000000..e69de29 diff --git a/docs/vendor/swiper-bundle/modules/thumbs.min.mjs b/docs/vendor/swiper-bundle/modules/thumbs.min.mjs new file mode 100644 index 0000000..36c3e5f --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/thumbs.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{l as isObject,e as elementChildren}from"../shared/utils.min.mjs";function Thumb(e){let{swiper:s,extendParams:i,on:t}=e;i({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,a=!1;function l(){const e=s.thumbs.swiper;if(!e||e.destroyed)return;const i=e.clickedIndex,t=e.clickedSlide;if(t&&t.classList.contains(s.params.thumbs.slideThumbActiveClass))return;if(null==i)return;let r;r=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):i,s.params.loop?s.slideToLoop(r):s.slideTo(r)}function n(){const{thumbs:e}=s.params;if(r)return!1;r=!0;const i=s.constructor;if(e.swiper instanceof i)s.thumbs.swiper=e.swiper,Object.assign(s.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(s.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),s.thumbs.swiper.update();else if(isObject(e.swiper)){const t=Object.assign({},e.swiper);Object.assign(t,{watchSlidesProgress:!0,slideToClickedSlide:!1}),s.thumbs.swiper=new i(t),a=!0}return s.thumbs.swiper.el.classList.add(s.params.thumbs.thumbsContainerClass),s.thumbs.swiper.on("tap",l),!0}function d(e){const i=s.thumbs.swiper;if(!i||i.destroyed)return;const t="auto"===i.params.slidesPerView?i.slidesPerViewDynamic():i.params.slidesPerView;let r=1;const a=s.params.thumbs.slideThumbActiveClass;if(s.params.slidesPerView>1&&!s.params.centeredSlides&&(r=s.params.slidesPerView),s.params.thumbs.multipleActiveThumbs||(r=1),r=Math.floor(r),i.slides.forEach((e=>e.classList.remove(a))),i.params.loop||i.params.virtual&&i.params.virtual.enabled)for(let e=0;e{e.classList.add(a)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${s.realIndex}`))[0];a=i.slides.indexOf(e),d=s.activeIndex>s.previousIndex?"next":"prev"}else a=s.realIndex,d=a>s.previousIndex?"next":"prev";n&&(a+="next"===d?l:-1*l),i.visibleSlidesIndexes&&i.visibleSlidesIndexes.indexOf(a)<0&&(i.params.centeredSlides?a=a>r?a-Math.floor(t/2)+1:a+Math.floor(t/2)-1:a>r&&i.params.slidesPerGroup,i.slideTo(a,e?0:void 0))}}s.thumbs={swiper:null},t("beforeInit",(()=>{const{thumbs:e}=s.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const i=getDocument(),t=()=>{const t="string"==typeof e.swiper?i.querySelector(e.swiper):e.swiper;if(t&&t.swiper)e.swiper=t.swiper,n(),d(!0);else if(t){const i=`${s.params.eventsPrefix}init`,r=a=>{e.swiper=a.detail[0],t.removeEventListener(i,r),n(),d(!0),e.swiper.update(),s.update()};t.addEventListener(i,r)}return t},r=()=>{if(s.destroyed)return;t()||requestAnimationFrame(r)};requestAnimationFrame(r)}else n(),d(!0)})),t("slideChange update resize observerUpdate",(()=>{d()})),t("setTransition",((e,i)=>{const t=s.thumbs.swiper;t&&!t.destroyed&&t.setTransition(i)})),t("beforeDestroy",(()=>{const e=s.thumbs.swiper;e&&!e.destroyed&&a&&e.destroy()})),Object.assign(s.thumbs,{init:n,update:d})}export{Thumb as default}; +//# sourceMappingURL=thumbs.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/thumbs.min.mjs.map b/docs/vendor/swiper-bundle/modules/thumbs.min.mjs.map new file mode 100644 index 0000000..3c78fc6 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/thumbs.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"thumbs.mjs.mjs","names":["getDocument","isObject","elementChildren","Thumb","_ref","swiper","extendParams","on","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","initialized","swiperCreated","onThumbClick","thumbsSwiper","destroyed","clickedIndex","clickedSlide","classList","contains","params","slideToIndex","loop","parseInt","getAttribute","slideToLoop","slideTo","init","thumbsParams","SwiperClass","constructor","Object","assign","originalParams","watchSlidesProgress","slideToClickedSlide","update","thumbsSwiperParams","el","add","initial","slidesPerView","slidesPerViewDynamic","thumbsToActivate","thumbActiveClass","centeredSlides","Math","floor","slides","forEach","slideEl","remove","virtual","enabled","i","slidesEl","realIndex","useOffset","currentThumbsIndex","activeIndex","newThumbsIndex","direction","newThumbsSlide","filter","indexOf","previousIndex","visibleSlidesIndexes","slidesPerGroup","undefined","HTMLElement","document","getThumbsElementAndInit","thumbsElement","querySelector","eventName","eventsPrefix","onThumbsSwiper","e","detail","removeEventListener","addEventListener","watchForThumbsToAppear","requestAnimationFrame","_s","duration","setTransition","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/thumbs.mjs b/docs/vendor/swiper-bundle/modules/thumbs.mjs new file mode 100644 index 0000000..218772f --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/thumbs.mjs @@ -0,0 +1,193 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { l as isObject, e as elementChildren } from '../shared/utils.mjs'; + +function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener(eventName, onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener(eventName, onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); +} + +export { Thumb as default }; diff --git a/docs/vendor/swiper-bundle/modules/thumbs.scss b/docs/vendor/swiper-bundle/modules/thumbs.scss new file mode 100644 index 0000000..9eaa1b3 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/thumbs.scss @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/docs/vendor/swiper-bundle/modules/virtual-element.css b/docs/vendor/swiper-bundle/modules/virtual-element.css new file mode 100644 index 0000000..432b52b --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/virtual-element.css @@ -0,0 +1,19 @@ +.swiper-virtual ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} diff --git a/docs/vendor/swiper-bundle/modules/virtual-element.min.css b/docs/vendor/swiper-bundle/modules/virtual-element.min.css new file mode 100644 index 0000000..d0e6043 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/virtual-element.min.css @@ -0,0 +1 @@ +.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/virtual.css b/docs/vendor/swiper-bundle/modules/virtual.css new file mode 100644 index 0000000..60ebeea --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/virtual.css @@ -0,0 +1,19 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} diff --git a/docs/vendor/swiper-bundle/modules/virtual.less b/docs/vendor/swiper-bundle/modules/virtual.less new file mode 100644 index 0000000..824cc1e --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/virtual.less @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/docs/vendor/swiper-bundle/modules/virtual.min.css b/docs/vendor/swiper-bundle/modules/virtual.min.css new file mode 100644 index 0000000..dbb4007 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/virtual.min.css @@ -0,0 +1 @@ +.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/virtual.min.mjs b/docs/vendor/swiper-bundle/modules/virtual.min.mjs new file mode 100644 index 0000000..c96dc2b --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/virtual.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{s as setCSSProperty,e as elementChildren,c as createElement}from"../shared/utils.min.mjs";function Virtual(e){let s,{swiper:t,extendParams:i,on:r,emit:a}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=getDocument();t.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const d=l.createElement("div");function n(e,s){const i=t.params.virtual;if(i.cache&&t.virtual.cache[s])return t.virtual.cache[s];let r;return i.renderSlide?(r=i.renderSlide.call(t,e,s),"string"==typeof r&&(d.innerHTML=r,r=d.children[0])):r=t.isElement?createElement("swiper-slide"):createElement("div",t.params.slideClass),r.setAttribute("data-swiper-slide-index",s),i.renderSlide||(r.innerHTML=e),i.cache&&(t.virtual.cache[s]=r),r}function c(e,s){const{slidesPerView:i,slidesPerGroup:r,centeredSlides:l,loop:d,initialSlide:c}=t.params;if(s&&!d&&c>0)return;const{addSlidesBefore:o,addSlidesAfter:u}=t.params.virtual,{from:p,to:h,slides:f,slidesGrid:v,offset:m}=t.virtual;t.params.cssMode||t.updateActiveIndex();const g=t.activeIndex||0;let E,x,w;E=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",l?(x=Math.floor(i/2)+r+u,w=Math.floor(i/2)+r+o):(x=i+(r-1)+u,w=(d?i:r)+o);let S=g-w,b=g+x;d||(S=Math.max(S,0),b=Math.min(b,f.length-1));let A=(t.slidesGrid[S]||0)-(t.slidesGrid[0]||0);function M(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),a("virtualUpdate")}if(d&&g>=w?(S-=w,l||(A+=t.slidesGrid[0])):d&&g{e.style[E]=A-Math.abs(t.cssOverflowAdjustment())+"px"})),t.updateProgress(),void a("virtualUpdate");if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:A,from:S,to:b,slides:function(){const e=[];for(let s=S;s<=b;s+=1)e.push(f[s]);return e}()}),void(t.params.virtual.renderExternalUpdate?M():a("virtualUpdate"));const y=[],P=[],j=e=>{let s=e;return e<0?s=f.length+e:s>=f.length&&(s-=f.length),s};if(e)t.slides.filter((e=>e.matches(`.${t.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=p;e<=h;e+=1)if(eb){const s=j(e);t.slides.filter((e=>e.matches(`.${t.params.slideClass}[data-swiper-slide-index="${s}"], swiper-slide[data-swiper-slide-index="${s}"]`))).forEach((e=>{e.remove()}))}const C=d?-f.length:0,G=d?2*f.length:f.length;for(let s=C;s=S&&s<=b){const t=j(s);void 0===h||e?P.push(t):(s>h&&P.push(t),s{t.slidesEl.append(n(f[e],e))})),d)for(let e=y.length-1;e>=0;e-=1){const s=y[e];t.slidesEl.prepend(n(f[s],s))}else y.sort(((e,s)=>s-e)),y.forEach((e=>{t.slidesEl.prepend(n(f[e],e))}));elementChildren(t.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[E]=A-Math.abs(t.cssOverflowAdjustment())+"px"})),M()}r("beforeInit",(()=>{if(!t.params.virtual.enabled)return;let e;if(void 0===t.passedParams.virtual.slides){const s=[...t.slidesEl.children].filter((e=>e.matches(`.${t.params.slideClass}, swiper-slide`)));s&&s.length&&(t.virtual.slides=[...s],e=!0,s.forEach(((e,s)=>{e.setAttribute("data-swiper-slide-index",s),t.virtual.cache[s]=e,e.remove()})))}e||(t.virtual.slides=t.params.virtual.slides),t.classNames.push(`${t.params.containerModifierClass}virtual`),t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0,c(!1,!0)})),r("setTranslate",(()=>{t.params.virtual.enabled&&(t.params.cssMode&&!t._immediateVirtual?(clearTimeout(s),s=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{t.params.virtual.enabled&&t.params.cssMode&&setCSSProperty(t.wrapperEl,"--swiper-virtual-size",`${t.virtualSize}px`)})),Object.assign(t.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let s=0;s{const i=e[t],a=i.getAttribute("data-swiper-slide-index");a&&i.setAttribute("data-swiper-slide-index",parseInt(a,10)+r),s[parseInt(t,10)+r]=i})),t.virtual.cache=s}c(!0),t.slideTo(i,0)},removeSlide:function(e){if(null==e)return;let s=t.activeIndex;if(Array.isArray(e))for(let i=e.length-1;i>=0;i-=1)t.params.virtual.cache&&(delete t.virtual.cache[e[i]],Object.keys(t.virtual.cache).forEach((s=>{s>e&&(t.virtual.cache[s-1]=t.virtual.cache[s],t.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete t.virtual.cache[s])}))),t.virtual.slides.splice(e[i],1),e[i]{s>e&&(t.virtual.cache[s-1]=t.virtual.cache[s],t.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete t.virtual.cache[s])}))),t.virtual.slides.splice(e,1),e 0) { + return; + } + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(false, true); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); +} + +export { Virtual as default }; diff --git a/docs/vendor/swiper-bundle/modules/virtual.scss b/docs/vendor/swiper-bundle/modules/virtual.scss new file mode 100644 index 0000000..824cc1e --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/virtual.scss @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/docs/vendor/swiper-bundle/modules/zoom-element.css b/docs/vendor/swiper-bundle/modules/zoom-element.css new file mode 100644 index 0000000..f81a92b --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/zoom-element.css @@ -0,0 +1,5 @@ +/* Zoom container styles start *//* Zoom container styles end */ +::slotted(.swiper-slide-zoomed) { + cursor: move; + touch-action: none; +} diff --git a/docs/vendor/swiper-bundle/modules/zoom-element.min.css b/docs/vendor/swiper-bundle/modules/zoom-element.min.css new file mode 100644 index 0000000..17d073f --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/zoom-element.min.css @@ -0,0 +1 @@ +::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/zoom.css b/docs/vendor/swiper-bundle/modules/zoom.css new file mode 100644 index 0000000..40f5b10 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/zoom.css @@ -0,0 +1,21 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Zoom container styles end */ +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/docs/vendor/swiper-bundle/modules/zoom.less b/docs/vendor/swiper-bundle/modules/zoom.less new file mode 100644 index 0000000..d226ae9 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/zoom.less @@ -0,0 +1,23 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} +/* Zoom container styles end */ + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/docs/vendor/swiper-bundle/modules/zoom.min.css b/docs/vendor/swiper-bundle/modules/zoom.min.css new file mode 100644 index 0000000..e55cd9a --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/zoom.min.css @@ -0,0 +1 @@ +.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/zoom.min.mjs b/docs/vendor/swiper-bundle/modules/zoom.min.mjs new file mode 100644 index 0000000..83bc6cc --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/zoom.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren,a as elementParents,b as elementOffset,j as getTranslate}from"../shared/utils.min.mjs";function Zoom(e){let{swiper:t,extendParams:i,on:a,emit:r}=e;const s=getWindow();i({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let o,n,l=1,m=!1;const c=[],d={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},u={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},p={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let g,h=1;function E(){if(c.length<2)return 1;const e=c[0].pageX,t=c[0].pageY,i=c[1].pageX,a=c[1].pageY;return Math.sqrt((i-e)**2+(a-t)**2)}function v(){const e=t.params.zoom,i=d.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&d.imageEl&&d.imageEl.naturalWidth){const e=d.imageEl.naturalWidth/d.imageEl.offsetWidth;return Math.min(e,i)}return i}function f(e){const i=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(i)||t.slides.filter((t=>t.contains(e.target))).length>0}function x(e){if("mouse"===e.pointerType&&c.splice(0,c.length),!f(e))return;const i=t.params.zoom;if(o=!1,n=!1,c.push(e),!(c.length<2)){if(o=!0,d.scaleStart=E(),!d.slideEl){d.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),d.slideEl||(d.slideEl=t.slides[t.activeIndex]);let a=d.slideEl.querySelector(`.${i.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=a,d.imageWrapEl=a?elementParents(d.imageEl,`.${i.containerClass}`)[0]:void 0,!d.imageWrapEl)return void(d.imageEl=void 0);d.maxRatio=v()}if(d.imageEl){const[e,t]=function(){if(c.length<2)return{x:null,y:null};const e=d.imageEl.getBoundingClientRect();return[(c[0].pageX+(c[1].pageX-c[0].pageX)/2-e.x-s.scrollX)/l,(c[0].pageY+(c[1].pageY-c[0].pageY)/2-e.y-s.scrollY)/l]}();d.originX=e,d.originY=t,d.imageEl.style.transitionDuration="0ms"}m=!0}}function X(e){if(!f(e))return;const i=t.params.zoom,a=t.zoom,r=c.findIndex((t=>t.pointerId===e.pointerId));r>=0&&(c[r]=e),c.length<2||(n=!0,d.scaleMove=E(),d.imageEl&&(a.scale=d.scaleMove/d.scaleStart*l,a.scale>d.maxRatio&&(a.scale=d.maxRatio-1+(a.scale-d.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));r>=0&&c.splice(r,1),o&&n&&(o=!1,n=!1,d.imageEl&&(a.scale=Math.max(Math.min(a.scale,d.maxRatio),i.minRatio),d.imageEl.style.transitionDuration=`${t.params.speed}ms`,d.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,l=a.scale,m=!1,a.scale>1&&d.slideEl?d.slideEl.classList.add(`${i.zoomedSlideClass}`):a.scale<=1&&d.slideEl&&d.slideEl.classList.remove(`${i.zoomedSlideClass}`),1===a.scale&&(d.originX=0,d.originY=0,d.slideEl=void 0)))}function y(){t.touchEventsData.preventTouchMoveFromPointerMove=!1}function z(e){if(!f(e)||!function(e){const i=`.${t.params.zoom.containerClass}`;return!!e.target.matches(i)||[...t.hostEl.querySelectorAll(i)].filter((t=>t.contains(e.target))).length>0}(e))return;const i=t.zoom;if(!d.imageEl)return;if(!u.isTouched||!d.slideEl)return;u.isMoved||(u.width=d.imageEl.offsetWidth||d.imageEl.clientWidth,u.height=d.imageEl.offsetHeight||d.imageEl.clientHeight,u.startX=getTranslate(d.imageWrapEl,"x")||0,u.startY=getTranslate(d.imageWrapEl,"y")||0,d.slideWidth=d.slideEl.offsetWidth,d.slideHeight=d.slideEl.offsetHeight,d.imageWrapEl.style.transitionDuration="0ms");const a=u.width*i.scale,r=u.height*i.scale;u.minX=Math.min(d.slideWidth/2-a/2,0),u.maxX=-u.minX,u.minY=Math.min(d.slideHeight/2-r/2,0),u.maxY=-u.minY,u.touchesCurrent.x=c.length>0?c[0].pageX:e.pageX,u.touchesCurrent.y=c.length>0?c[0].pageY:e.pageY;if(Math.max(Math.abs(u.touchesCurrent.x-u.touchesStart.x),Math.abs(u.touchesCurrent.y-u.touchesStart.y))>5&&(t.allowClick=!1),!u.isMoved&&!m){if(t.isHorizontal()&&(Math.floor(u.minX)===Math.floor(u.startX)&&u.touchesCurrent.xu.touchesStart.x))return u.isTouched=!1,void y();if(!t.isHorizontal()&&(Math.floor(u.minY)===Math.floor(u.startY)&&u.touchesCurrent.yu.touchesStart.y))return u.isTouched=!1,void y()}e.cancelable&&e.preventDefault(),e.stopPropagation(),clearTimeout(g),t.touchEventsData.preventTouchMoveFromPointerMove=!0,g=setTimeout((()=>{y()})),u.isMoved=!0;const s=(i.scale-l)/(d.maxRatio-t.params.zoom.minRatio),{originX:o,originY:n}=d;u.currentX=u.touchesCurrent.x-u.touchesStart.x+u.startX+s*(u.width-2*o),u.currentY=u.touchesCurrent.y-u.touchesStart.y+u.startY+s*(u.height-2*n),u.currentXu.maxX&&(u.currentX=u.maxX-1+(u.currentX-u.maxX+1)**.8),u.currentYu.maxY&&(u.currentY=u.maxY-1+(u.currentY-u.maxY+1)**.8),p.prevPositionX||(p.prevPositionX=u.touchesCurrent.x),p.prevPositionY||(p.prevPositionY=u.touchesCurrent.y),p.prevTime||(p.prevTime=Date.now()),p.x=(u.touchesCurrent.x-p.prevPositionX)/(Date.now()-p.prevTime)/2,p.y=(u.touchesCurrent.y-p.prevPositionY)/(Date.now()-p.prevTime)/2,Math.abs(u.touchesCurrent.x-p.prevPositionX)<2&&(p.x=0),Math.abs(u.touchesCurrent.y-p.prevPositionY)<2&&(p.y=0),p.prevPositionX=u.touchesCurrent.x,p.prevPositionY=u.touchesCurrent.y,p.prevTime=Date.now(),d.imageWrapEl.style.transform=`translate3d(${u.currentX}px, ${u.currentY}px,0)`}function C(){const e=t.zoom;d.slideEl&&t.activeIndex!==t.slides.indexOf(d.slideEl)&&(d.imageEl&&(d.imageEl.style.transform="translate3d(0,0,0) scale(1)"),d.imageWrapEl&&(d.imageWrapEl.style.transform="translate3d(0,0,0)"),d.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,l=1,d.slideEl=void 0,d.imageEl=void 0,d.imageWrapEl=void 0,d.originX=0,d.originY=0)}function M(e){const i=t.zoom,a=t.params.zoom;if(!d.slideEl){e&&e.target&&(d.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),d.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?d.slideEl=elementChildren(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:d.slideEl=t.slides[t.activeIndex]);let i=d.slideEl.querySelector(`.${a.containerClass}`);i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=i,d.imageWrapEl=i?elementParents(d.imageEl,`.${a.containerClass}`)[0]:void 0}if(!d.imageEl||!d.imageWrapEl)return;let r,o,n,m,c,p,g,h,E,f,x,X,Y,y,z,C,M,w;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),d.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===u.touchesStart.x&&e?(r=e.pageX,o=e.pageY):(r=u.touchesStart.x,o=u.touchesStart.y);const W="number"==typeof e?e:null;1===l&&W&&(r=void 0,o=void 0);const b=v();i.scale=W||b,l=W||b,!e||1===l&&W?(g=0,h=0):(M=d.slideEl.offsetWidth,w=d.slideEl.offsetHeight,n=elementOffset(d.slideEl).left+s.scrollX,m=elementOffset(d.slideEl).top+s.scrollY,c=n+M/2-r,p=m+w/2-o,E=d.imageEl.offsetWidth||d.imageEl.clientWidth,f=d.imageEl.offsetHeight||d.imageEl.clientHeight,x=E*i.scale,X=f*i.scale,Y=Math.min(M/2-x/2,0),y=Math.min(w/2-X/2,0),z=-Y,C=-y,g=c*i.scale,h=p*i.scale,gz&&(g=z),hC&&(h=C)),W&&1===i.scale&&(d.originX=0,d.originY=0),d.imageWrapEl.style.transitionDuration="300ms",d.imageWrapEl.style.transform=`translate3d(${g}px, ${h}px,0)`,d.imageEl.style.transitionDuration="300ms",d.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`}function w(){const e=t.zoom,i=t.params.zoom;if(!d.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?d.slideEl=elementChildren(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:d.slideEl=t.slides[t.activeIndex];let e=d.slideEl.querySelector(`.${i.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=e,d.imageWrapEl=e?elementParents(d.imageEl,`.${i.containerClass}`)[0]:void 0}d.imageEl&&d.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,l=1,d.imageWrapEl.style.transitionDuration="300ms",d.imageWrapEl.style.transform="translate3d(0,0,0)",d.imageEl.style.transitionDuration="300ms",d.imageEl.style.transform="translate3d(0,0,0) scale(1)",d.slideEl.classList.remove(`${i.zoomedSlideClass}`),d.slideEl=void 0,d.originX=0,d.originY=0)}function W(e){const i=t.zoom;i.scale&&1!==i.scale?w():M(e)}function b(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function S(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:i,activeListenerWithCapture:a}=b();t.wrapperEl.addEventListener("pointerdown",x,i),t.wrapperEl.addEventListener("pointermove",X,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,Y,i)})),t.wrapperEl.addEventListener("pointermove",z,a)}function $(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:i,activeListenerWithCapture:a}=b();t.wrapperEl.removeEventListener("pointerdown",x,i),t.wrapperEl.removeEventListener("pointermove",X,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,Y,i)})),t.wrapperEl.removeEventListener("pointermove",z,a)}Object.defineProperty(t.zoom,"scale",{get:()=>h,set(e){if(h!==e){const t=d.imageEl,i=d.slideEl;r("zoomChange",e,t,i)}h=e}}),a("init",(()=>{t.params.zoom.enabled&&S()})),a("destroy",(()=>{$()})),a("touchStart",((e,i)=>{t.zoom.enabled&&function(e){const i=t.device;if(!d.imageEl)return;if(u.isTouched)return;i.android&&e.cancelable&&e.preventDefault(),u.isTouched=!0;const a=c.length>0?c[0]:e;u.touchesStart.x=a.pageX,u.touchesStart.y=a.pageY}(i)})),a("touchEnd",((e,i)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!d.imageEl)return;if(!u.isTouched||!u.isMoved)return u.isTouched=!1,void(u.isMoved=!1);u.isTouched=!1,u.isMoved=!1;let i=300,a=300;const r=p.x*i,s=u.currentX+r,o=p.y*a,n=u.currentY+o;0!==p.x&&(i=Math.abs((s-u.currentX)/p.x)),0!==p.y&&(a=Math.abs((n-u.currentY)/p.y));const l=Math.max(i,a);u.currentX=s,u.currentY=n;const m=u.width*e.scale,c=u.height*e.scale;u.minX=Math.min(d.slideWidth/2-m/2,0),u.maxX=-u.minX,u.minY=Math.min(d.slideHeight/2-c/2,0),u.maxY=-u.minY,u.currentX=Math.max(Math.min(u.currentX,u.maxX),u.minX),u.currentY=Math.max(Math.min(u.currentY,u.maxY),u.minY),d.imageWrapEl.style.transitionDuration=`${l}ms`,d.imageWrapEl.style.transform=`translate3d(${u.currentX}px, ${u.currentY}px,0)`}()})),a("doubleTap",((e,i)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&W(i)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:S,disable:$,in:M,out:w,toggle:W})}export{Zoom as default}; +//# sourceMappingURL=zoom.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/zoom.min.mjs.map b/docs/vendor/swiper-bundle/modules/zoom.min.mjs.map new file mode 100644 index 0000000..9a01b29 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/zoom.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"zoom.mjs.mjs","names":["getWindow","elementChildren","elementParents","elementOffset","getTranslate","Zoom","_ref","swiper","extendParams","on","emit","window","zoom","enabled","limitToOriginalSize","maxRatio","minRatio","toggle","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideEl","undefined","slideWidth","slideHeight","imageEl","imageWrapEl","image","isTouched","isMoved","currentX","currentY","minX","minY","maxX","maxY","width","height","startX","startY","touchesStart","touchesCurrent","velocity","x","y","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","scale","getDistanceBetweenTouches","length","x1","pageX","y1","pageY","x2","y2","Math","sqrt","getMaxRatio","params","getAttribute","naturalWidth","imageMaxRatio","offsetWidth","min","eventWithinSlide","e","slideSelector","isElement","slideClass","target","matches","slides","filter","contains","onGestureStart","pointerType","splice","push","scaleStart","closest","activeIndex","querySelector","querySelectorAll","box","getBoundingClientRect","scrollX","scrollY","getScaleOrigin","style","transitionDuration","onGestureChange","pointerIndex","findIndex","cachedEv","pointerId","scaleMove","transform","onGestureEnd","type","max","speed","classList","add","remove","allowTouchMove","touchEventsData","preventTouchMoveFromPointerMove","onTouchMove","selector","hostEl","containerEl","eventWithinZoomContainer","clientWidth","offsetHeight","clientHeight","scaledWidth","scaledHeight","abs","allowClick","isHorizontal","floor","cancelable","preventDefault","stopPropagation","clearTimeout","setTimeout","scaleRatio","Date","now","onTransitionEnd","indexOf","zoomIn","virtual","slidesEl","slideActiveClass","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","cssMode","wrapperEl","overflow","touchAction","forceZoomRatio","left","top","zoomOut","zoomToggle","getListeners","passiveListener","passiveListeners","passive","capture","activeListenerWithCapture","enable","addEventListener","forEach","eventName","disable","removeEventListener","Object","defineProperty","get","set","value","_s","device","android","event","onTouchStart","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTouchEnd","animating","assign","in","out"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/modules/zoom.mjs b/docs/vendor/swiper-bundle/modules/zoom.mjs new file mode 100644 index 0000000..6e19ee7 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/zoom.mjs @@ -0,0 +1,621 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs'; + +function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + let allowTouchMoveTimeout; + function allowTouchMove() { + swiper.touchEventsData.preventTouchMoveFromPointerMove = false; + } + function preventTouchMove() { + clearTimeout(allowTouchMoveTimeout); + swiper.touchEventsData.preventTouchMoveFromPointerMove = true; + allowTouchMoveTimeout = setTimeout(() => { + allowTouchMove(); + }); + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { + return; + } + const zoom = swiper.zoom; + if (!gesture.imageEl) { + return; + } + if (!image.isTouched || !gesture.slideEl) { + return; + } + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + allowTouchMove(); + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + allowTouchMove(); + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + preventTouchMove(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); +} + +export { Zoom as default }; diff --git a/docs/vendor/swiper-bundle/modules/zoom.scss b/docs/vendor/swiper-bundle/modules/zoom.scss new file mode 100644 index 0000000..1f56449 --- /dev/null +++ b/docs/vendor/swiper-bundle/modules/zoom.scss @@ -0,0 +1,21 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/docs/vendor/swiper-bundle/package.json b/docs/vendor/swiper-bundle/package.json new file mode 100644 index 0000000..6354ba0 --- /dev/null +++ b/docs/vendor/swiper-bundle/package.json @@ -0,0 +1,212 @@ +{ + "name": "swiper", + "version": "11.1.7", + "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", + "typings": "swiper.d.ts", + "type": "module", + "main": "./swiper.mjs", + "module": "./swiper.mjs", + "exports": { + ".": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./effect-utils": { + "types": "./swiper-effect-utils.d.ts", + "default": "./swiper-effect-utils.mjs" + }, + "./core": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./bundle": { + "types": "./swiper.d.ts", + "default": "./swiper-bundle.mjs" + }, + "./css": "./swiper.css", + "./css/bundle": "./swiper-bundle.css", + "./swiper-bundle.css": "./swiper-bundle.css", + "./css/a11y": "./modules/a11y.css", + "./css/autoplay": "./modules/autoplay.css", + "./css/controller": "./modules/controller.css", + "./css/effect-coverflow": "./modules/effect-coverflow.css", + "./css/effect-cube": "./modules/effect-cube.css", + "./css/effect-fade": "./modules/effect-fade.css", + "./css/effect-flip": "./modules/effect-flip.css", + "./css/effect-creative": "./modules/effect-creative.css", + "./css/effect-cards": "./modules/effect-cards.css", + "./css/free-mode": "./modules/free-mode.css", + "./css/grid": "./modules/grid.css", + "./css/hash-navigation": "./modules/hash-navigation.css", + "./css/history": "./modules/history.css", + "./css/keyboard": "./modules/keyboard.css", + "./css/manipulation": "./modules/manipulation.css", + "./css/mousewheel": "./modules/mousewheel.css", + "./css/navigation": "./modules/navigation.css", + "./css/pagination": "./modules/pagination.css", + "./css/parallax": "./modules/parallax.css", + "./css/scrollbar": "./modules/scrollbar.css", + "./css/thumbs": "./modules/thumbs.css", + "./css/virtual": "./modules/virtual.css", + "./css/zoom": "./modules/zoom.css", + "./less": "./swiper.less", + "./less/a11y": "./modules/a11y.less", + "./less/autoplay": "./modules/autoplay.less", + "./less/controller": "./modules/controller.less", + "./less/effect-coverflow": "./modules/effect-coverflow.less", + "./less/effect-cube": "./modules/effect-cube.less", + "./less/effect-fade": "./modules/effect-fade.less", + "./less/effect-flip": "./modules/effect-flip.less", + "./less/effect-creative": "./modules/effect-creative.less", + "./less/effect-cards": "./modules/effect-cards.less", + "./less/free-mode": "./modules/free-mode.less", + "./less/grid": "./modules/grid.less", + "./less/hash-navigation": "./modules/hash-navigation.less", + "./less/history": "./modules/history.less", + "./less/keyboard": "./modules/keyboard.less", + "./less/manipulation": "./modules/manipulation.less", + "./less/mousewheel": "./modules/mousewheel.less", + "./less/navigation": "./modules/navigation.less", + "./less/pagination": "./modules/pagination.less", + "./less/parallax": "./modules/parallax.less", + "./less/scrollbar": "./modules/scrollbar.less", + "./less/thumbs": "./modules/thumbs.less", + "./less/virtual": "./modules/virtual.less", + "./less/zoom": "./modules/zoom.less", + "./scss": "./swiper.scss", + "./scss/a11y": "./modules/a11y.scss", + "./scss/autoplay": "./modules/autoplay.scss", + "./scss/controller": "./modules/controller.scss", + "./scss/effect-coverflow": "./modules/effect-coverflow.scss", + "./scss/effect-cube": "./modules/effect-cube.scss", + "./scss/effect-fade": "./modules/effect-fade.scss", + "./scss/effect-flip": "./modules/effect-flip.scss", + "./scss/effect-creative": "./modules/effect-creative.scss", + "./scss/effect-cards": "./modules/effect-cards.scss", + "./scss/free-mode": "./modules/free-mode.scss", + "./scss/grid": "./modules/grid.scss", + "./scss/hash-navigation": "./modules/hash-navigation.scss", + "./scss/history": "./modules/history.scss", + "./scss/keyboard": "./modules/keyboard.scss", + "./scss/manipulation": "./modules/manipulation.scss", + "./scss/mousewheel": "./modules/mousewheel.scss", + "./scss/navigation": "./modules/navigation.scss", + "./scss/pagination": "./modules/pagination.scss", + "./scss/parallax": "./modules/parallax.scss", + "./scss/scrollbar": "./modules/scrollbar.scss", + "./scss/thumbs": "./modules/thumbs.scss", + "./scss/virtual": "./modules/virtual.scss", + "./scss/zoom": "./modules/zoom.scss", + "./element": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element.mjs" + }, + "./element/bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element-bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element/css/a11y": "./modules/a11y-element.css", + "./element/css/autoplay": "./modules/autoplay-element.css", + "./element/css/controller": "./modules/controller-element.css", + "./element/css/effect-coverflow": "./modules/effect-coverflow-element.css", + "./element/css/effect-cube": "./modules/effect-cube-element.css", + "./element/css/effect-fade": "./modules/effect-fade-element.css", + "./element/css/effect-flip": "./modules/effect-flip-element.css", + "./element/css/effect-creative": "./modules/effect-creative-element.css", + "./element/css/effect-cards": "./modules/effect-cards-element.css", + "./element/css/free-mode": "./modules/free-mode-element.css", + "./element/css/grid": "./modules/grid-element.css", + "./element/css/hash-navigation": "./modules/hash-navigation-element.css", + "./element/css/history": "./modules/history-element.css", + "./element/css/keyboard": "./modules/keyboard-element.css", + "./element/css/manipulation": "./modules/manipulation-element.css", + "./element/css/mousewheel": "./modules/mousewheel-element.css", + "./element/css/navigation": "./modules/navigation-element.css", + "./element/css/pagination": "./modules/pagination-element.css", + "./element/css/parallax": "./modules/parallax-element.css", + "./element/css/scrollbar": "./modules/scrollbar-element.css", + "./element/css/thumbs": "./modules/thumbs-element.css", + "./element/css/virtual": "./modules/virtual-element.css", + "./element/css/zoom": "./modules/zoom-element.css", + "./react": { + "types": "./swiper-react.d.ts", + "default": "./swiper-react.mjs" + }, + "./vue": { + "types": "./swiper-vue.d.ts", + "default": "./swiper-vue.mjs" + }, + "./modules": { + "types": "./types/modules/index.d.ts", + "default": "./modules/index.mjs" + }, + "./types": "./types/index.d.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "modules": [ + "./types/modules/index.d.ts" + ], + "element": [ + "./swiper-element.d.ts" + ], + "element/bundle": [ + "./swiper-element.d.ts" + ], + "react": [ + "./swiper-react.d.ts" + ], + "vue": [ + "./swiper-vue.d.ts" + ] + } + }, + "repository": { + "type": "git", + "url": "https://github.com/nolimits4web/Swiper.git" + }, + "keywords": [ + "swiper", + "swipe", + "slider", + "touch", + "ios", + "mobile", + "cordova", + "phonegap", + "app", + "framework", + "framework7", + "carousel", + "gallery", + "plugin", + "react", + "vue", + "slideshow" + ], + "author": "Vladimir Kharlampidi", + "license": "MIT", + "bugs": { + "url": "https://github.com/nolimits4web/swiper/issues" + }, + "homepage": "https://swiperjs.com", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + }, + "releaseDate": "July 24, 2024" +} diff --git a/docs/vendor/swiper-bundle/shared/classes-to-selector.min.mjs b/docs/vendor/swiper-bundle/shared/classes-to-selector.min.mjs new file mode 100644 index 0000000..f177f5b --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/classes-to-selector.min.mjs @@ -0,0 +1,2 @@ +function classesToSelector(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}export{classesToSelector as c}; +//# sourceMappingURL=classes-to-selector.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/classes-to-selector.min.mjs.map b/docs/vendor/swiper-bundle/shared/classes-to-selector.min.mjs.map new file mode 100644 index 0000000..d817369 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/classes-to-selector.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"classes-to-selector.mjs.mjs","names":["classesToSelector","classes","trim","replace"],"sources":["0"],"mappings":"AAAA,SAASA,kBAAkBC,GAIzB,YAHgB,IAAZA,IACFA,EAAU,IAEL,IAAIA,EAAQC,OAAOC,QAAQ,eAAgB,QACjDA,QAAQ,KAAM,MACjB,QAESH"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/classes-to-selector.mjs b/docs/vendor/swiper-bundle/shared/classes-to-selector.mjs new file mode 100644 index 0000000..dd142d5 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/classes-to-selector.mjs @@ -0,0 +1,9 @@ +function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; +} + +export { classesToSelector as c }; diff --git a/docs/vendor/swiper-bundle/shared/create-element-if-not-defined.min.mjs b/docs/vendor/swiper-bundle/shared/create-element-if-not-defined.min.mjs new file mode 100644 index 0000000..f92d40d --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/create-element-if-not-defined.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren,c as createElement}from"./utils.min.mjs";function createElementIfNotDefined(e,t,n,a){return e.params.createElements&&Object.keys(a).forEach((l=>{if(!n[l]&&!0===n.auto){let r=elementChildren(e.el,`.${a[l]}`)[0];r||(r=createElement("div",a[l]),r.className=a[l],e.el.append(r)),n[l]=r,t[l]=r}})),n}export{createElementIfNotDefined as c}; +//# sourceMappingURL=create-element-if-not-defined.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/create-element-if-not-defined.min.mjs.map b/docs/vendor/swiper-bundle/shared/create-element-if-not-defined.min.mjs.map new file mode 100644 index 0000000..85a319b --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/create-element-if-not-defined.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-element-if-not-defined.mjs.mjs","names":["elementChildren","createElement","createElementIfNotDefined","swiper","originalParams","params","checkProps","createElements","Object","keys","forEach","key","auto","element","el","className","append"],"sources":["0"],"mappings":"YAAcA,qBAAsBC,kBAAqB,kBAEzD,SAASC,0BAA0BC,EAAQC,EAAgBC,EAAQC,GAejE,OAdIH,EAAOE,OAAOE,gBAChBC,OAAOC,KAAKH,GAAYI,SAAQC,IAC9B,IAAKN,EAAOM,KAAwB,IAAhBN,EAAOO,KAAe,CACxC,IAAIC,EAAUb,gBAAgBG,EAAOW,GAAI,IAAIR,EAAWK,MAAQ,GAC3DE,IACHA,EAAUZ,cAAc,MAAOK,EAAWK,IAC1CE,EAAQE,UAAYT,EAAWK,GAC/BR,EAAOW,GAAGE,OAAOH,IAEnBR,EAAOM,GAAOE,EACdT,EAAeO,GAAOE,CACxB,KAGGR,CACT,QAESH"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/create-element-if-not-defined.mjs b/docs/vendor/swiper-bundle/shared/create-element-if-not-defined.mjs new file mode 100644 index 0000000..10b283f --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/create-element-if-not-defined.mjs @@ -0,0 +1,21 @@ +import { e as elementChildren, c as createElement } from './utils.mjs'; + +function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; +} + +export { createElementIfNotDefined as c }; diff --git a/docs/vendor/swiper-bundle/shared/create-shadow.min.mjs b/docs/vendor/swiper-bundle/shared/create-shadow.min.mjs new file mode 100644 index 0000000..ee6b7a7 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/create-shadow.min.mjs @@ -0,0 +1,2 @@ +import{g as getSlideTransformEl,c as createElement}from"./utils.min.mjs";function createShadow(e,t,r){const s=`swiper-slide-shadow${r?`-${r}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=getSlideTransformEl(t);let i=a.querySelector(`.${s.split(" ").join(".")}`);return i||(i=createElement("div",s.split(" ")),a.append(i)),i}export{createShadow as c}; +//# sourceMappingURL=create-shadow.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/create-shadow.min.mjs.map b/docs/vendor/swiper-bundle/shared/create-shadow.min.mjs.map new file mode 100644 index 0000000..4505556 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/create-shadow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-shadow.mjs.mjs","names":["getSlideTransformEl","createElement","createShadow","suffix","slideEl","side","shadowClass","shadowContainer","shadowEl","querySelector","split","join","append"],"sources":["0"],"mappings":"YAAcA,yBAA0BC,kBAAqB,kBAE7D,SAASC,aAAaC,EAAQC,EAASC,GACrC,MAAMC,EAAc,sBAAsBD,EAAO,IAAIA,IAAS,KAAKF,EAAS,wBAAwBA,IAAW,KACzGI,EAAkBP,oBAAoBI,GAC5C,IAAII,EAAWD,EAAgBE,cAAc,IAAIH,EAAYI,MAAM,KAAKC,KAAK,QAK7E,OAJKH,IACHA,EAAWP,cAAc,MAAOK,EAAYI,MAAM,MAClDH,EAAgBK,OAAOJ,IAElBA,CACT,QAESN"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/create-shadow.mjs b/docs/vendor/swiper-bundle/shared/create-shadow.mjs new file mode 100644 index 0000000..2767e70 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/create-shadow.mjs @@ -0,0 +1,14 @@ +import { g as getSlideTransformEl, c as createElement } from './utils.mjs'; + +function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; +} + +export { createShadow as c }; diff --git a/docs/vendor/swiper-bundle/shared/effect-init.min.mjs b/docs/vendor/swiper-bundle/shared/effect-init.min.mjs new file mode 100644 index 0000000..feed86e --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/effect-init.min.mjs @@ -0,0 +1,2 @@ +function effectInit(e){const{effect:s,swiper:a,on:t,setTranslate:r,setTransition:i,overwriteParams:n,perspective:o,recreateShadows:f,getEffectParams:l}=e;let c;t("beforeInit",(()=>{if(a.params.effect!==s)return;a.classNames.push(`${a.params.containerModifierClass}${s}`),o&&o()&&a.classNames.push(`${a.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(a.params,e),Object.assign(a.originalParams,e)})),t("setTranslate",(()=>{a.params.effect===s&&r()})),t("setTransition",((e,t)=>{a.params.effect===s&&i(t)})),t("transitionEnd",(()=>{if(a.params.effect===s&&f){if(!l||!l().slideShadows)return;a.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),f()}})),t("virtualUpdate",(()=>{a.params.effect===s&&(a.slides.length||(c=!0),requestAnimationFrame((()=>{c&&a.slides&&a.slides.length&&(r(),c=!1)})))}))}export{effectInit as e}; +//# sourceMappingURL=effect-init.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/effect-init.min.mjs.map b/docs/vendor/swiper-bundle/shared/effect-init.min.mjs.map new file mode 100644 index 0000000..7250e5b --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/effect-init.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-init.mjs.mjs","names":["effectInit","params","effect","swiper","on","setTranslate","setTransition","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","classNames","push","containerModifierClass","overwriteParamsResult","Object","assign","originalParams","_s","duration","slideShadows","slides","forEach","slideEl","querySelectorAll","shadowEl","remove","length","requestAnimationFrame"],"sources":["0"],"mappings":"AAAA,SAASA,WAAWC,GAClB,MAAMC,OACJA,EAAMC,OACNA,EAAMC,GACNA,EAAEC,aACFA,EAAYC,cACZA,EAAaC,gBACbA,EAAeC,YACfA,EAAWC,gBACXA,EAAeC,gBACfA,GACET,EA+BJ,IAAIU,EA9BJP,EAAG,cAAc,KACf,GAAID,EAAOF,OAAOC,SAAWA,EAAQ,OACrCC,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,yBAAyBZ,KAC7DM,GAAeA,KACjBL,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,4BAE1C,MAAMC,EAAwBR,EAAkBA,IAAoB,CAAC,EACrES,OAAOC,OAAOd,EAAOF,OAAQc,GAC7BC,OAAOC,OAAOd,EAAOe,eAAgBH,EAAsB,IAE7DX,EAAG,gBAAgB,KACbD,EAAOF,OAAOC,SAAWA,GAC7BG,GAAc,IAEhBD,EAAG,iBAAiB,CAACe,EAAIC,KACnBjB,EAAOF,OAAOC,SAAWA,GAC7BI,EAAcc,EAAS,IAEzBhB,EAAG,iBAAiB,KAClB,GAAID,EAAOF,OAAOC,SAAWA,GACzBO,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBW,aAAc,OAEzDlB,EAAOmB,OAAOC,SAAQC,IACpBA,EAAQC,iBAAiB,gHAAgHF,SAAQG,GAAYA,EAASC,UAAS,IAGjLlB,GACF,KAGFL,EAAG,iBAAiB,KACdD,EAAOF,OAAOC,SAAWA,IACxBC,EAAOmB,OAAOM,SACjBjB,GAAyB,GAE3BkB,uBAAsB,KAChBlB,GAA0BR,EAAOmB,QAAUnB,EAAOmB,OAAOM,SAC3DvB,IACAM,GAAyB,EAC3B,IACA,GAEN,QAESX"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/effect-init.mjs b/docs/vendor/swiper-bundle/shared/effect-init.mjs new file mode 100644 index 0000000..d418687 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/effect-init.mjs @@ -0,0 +1,58 @@ +function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); +} + +export { effectInit as e }; diff --git a/docs/vendor/swiper-bundle/shared/effect-target.min.mjs b/docs/vendor/swiper-bundle/shared/effect-target.min.mjs new file mode 100644 index 0000000..9829053 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/effect-target.min.mjs @@ -0,0 +1,2 @@ +import{g as getSlideTransformEl}from"./utils.min.mjs";function effectTarget(e,i){const t=getSlideTransformEl(i);return t!==i&&(t.style.backfaceVisibility="hidden",t.style["-webkit-backface-visibility"]="hidden"),t}export{effectTarget as e}; +//# sourceMappingURL=effect-target.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/effect-target.min.mjs.map b/docs/vendor/swiper-bundle/shared/effect-target.min.mjs.map new file mode 100644 index 0000000..9d0c540 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/effect-target.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-target.mjs.mjs","names":["getSlideTransformEl","effectTarget","effectParams","slideEl","transformEl","style","backfaceVisibility"],"sources":["0"],"mappings":"YAAcA,wBAA2B,kBAEzC,SAASC,aAAaC,EAAcC,GAClC,MAAMC,EAAcJ,oBAAoBG,GAKxC,OAJIC,IAAgBD,IAClBC,EAAYC,MAAMC,mBAAqB,SACvCF,EAAYC,MAAM,+BAAiC,UAE9CD,CACT,QAESH"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/effect-target.mjs b/docs/vendor/swiper-bundle/shared/effect-target.mjs new file mode 100644 index 0000000..b1a7b3b --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/effect-target.mjs @@ -0,0 +1,12 @@ +import { g as getSlideTransformEl } from './utils.mjs'; + +function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; +} + +export { effectTarget as e }; diff --git a/docs/vendor/swiper-bundle/shared/effect-virtual-transition-end.min.mjs b/docs/vendor/swiper-bundle/shared/effect-virtual-transition-end.min.mjs new file mode 100644 index 0000000..6071178 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/effect-virtual-transition-end.min.mjs @@ -0,0 +1,2 @@ +import{k as elementTransitionEnd}from"./utils.min.mjs";function effectVirtualTransitionEnd(e){let{swiper:t,duration:n,transformElements:r,allSlides:i}=e;const{activeIndex:a}=t;if(t.params.virtualTranslate&&0!==n){let e,n=!1;e=i?r:r.filter((e=>{const n=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(n)===a})),e.forEach((e=>{elementTransitionEnd(e,(()=>{if(n)return;if(!t||t.destroyed)return;n=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}export{effectVirtualTransitionEnd as e}; +//# sourceMappingURL=effect-virtual-transition-end.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/effect-virtual-transition-end.min.mjs.map b/docs/vendor/swiper-bundle/shared/effect-virtual-transition-end.min.mjs.map new file mode 100644 index 0000000..da4e095 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/effect-virtual-transition-end.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-virtual-transition-end.mjs.mjs","names":["elementTransitionEnd","effectVirtualTransitionEnd","_ref","swiper","duration","transformElements","allSlides","activeIndex","params","virtualTranslate","transitionEndTarget","eventTriggered","filter","transformEl","el","classList","contains","parentElement","slides","slideEl","shadowRoot","parentNode","getSlide","getSlideIndex","forEach","destroyed","animating","evt","window","CustomEvent","bubbles","cancelable","wrapperEl","dispatchEvent"],"sources":["0"],"mappings":"YAAcA,yBAA4B,kBAE1C,SAASC,2BAA2BC,GAClC,IAAIC,OACFA,EAAMC,SACNA,EAAQC,kBACRA,EAAiBC,UACjBA,GACEJ,EACJ,MAAMK,YACJA,GACEJ,EASJ,GAAIA,EAAOK,OAAOC,kBAAiC,IAAbL,EAAgB,CACpD,IACIM,EADAC,GAAiB,EAGnBD,EADEJ,EACoBD,EAEAA,EAAkBO,QAAOC,IAC7C,MAAMC,EAAKD,EAAYE,UAAUC,SAAS,0BAf/BF,KACf,IAAKA,EAAGG,cAGN,OADcd,EAAOe,OAAON,QAAOO,GAAWA,EAAQC,YAAcD,EAAQC,aAAeN,EAAGO,aAAY,GAG5G,OAAOP,EAAGG,aAAa,EASmDK,CAAST,GAAeA,EAC9F,OAAOV,EAAOoB,cAAcT,KAAQP,CAAW,IAGnDG,EAAoBc,SAAQV,IAC1Bd,qBAAqBc,GAAI,KACvB,GAAIH,EAAgB,OACpB,IAAKR,GAAUA,EAAOsB,UAAW,OACjCd,GAAiB,EACjBR,EAAOuB,WAAY,EACnB,MAAMC,EAAM,IAAIC,OAAOC,YAAY,gBAAiB,CAClDC,SAAS,EACTC,YAAY,IAEd5B,EAAO6B,UAAUC,cAAcN,EAAI,GACnC,GAEN,CACF,QAES1B"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/effect-virtual-transition-end.mjs b/docs/vendor/swiper-bundle/shared/effect-virtual-transition-end.mjs new file mode 100644 index 0000000..540615e --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/effect-virtual-transition-end.mjs @@ -0,0 +1,48 @@ +import { k as elementTransitionEnd } from './utils.mjs'; + +function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } +} + +export { effectVirtualTransitionEnd as e }; diff --git a/docs/vendor/swiper-bundle/shared/get-element-params.min.mjs b/docs/vendor/swiper-bundle/shared/get-element-params.min.mjs new file mode 100644 index 0000000..8a456d3 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/get-element-params.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,i as isObject,c as attrToProp,p as paramsList}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";const formatValue=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let a;try{a=JSON.parse(e)}catch(t){a=e}return a}return e}},modulesParamsList=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function getParams(e,a,t){const r={},n={};extend(r,defaults);const i=[...paramsList,"on"],o=i.map((e=>e.replace(/_/,"")));i.forEach((a=>{a=a.replace("_",""),void 0!==e[a]&&(n[a]=e[a])}));const s=[...e.attributes];return"string"==typeof a&&void 0!==t&&s.push({name:a,value:isObject(t)?{...t}:t}),s.forEach((e=>{const a=modulesParamsList.filter((a=>0===e.name.indexOf(`${a}-`)))[0];if(a){const t=attrToProp(a),r=attrToProp(e.name.split(`${a}-`)[1]);void 0===n[t]&&(n[t]={}),!0===n[t]&&(n[t]={enabled:!0}),n[t][r]=formatValue(e.value)}else{const a=attrToProp(e.name);if(!o.includes(a))return;const t=formatValue(e.value);n[a]&&modulesParamsList.includes(e.name)&&!isObject(t)?(n[a].constructor!==Object&&(n[a]={}),n[a].enabled=!!t):n[a]=t}})),extend(r,n),r.navigation?r.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==r.navigation?r.navigation:{}}:!1===r.navigation&&delete r.navigation,r.scrollbar?r.scrollbar={el:".swiper-scrollbar",...!0!==r.scrollbar?r.scrollbar:{}}:!1===r.scrollbar&&delete r.scrollbar,r.pagination?r.pagination={el:".swiper-pagination",...!0!==r.pagination?r.pagination:{}}:!1===r.pagination&&delete r.pagination,{params:r,passedParams:n}}export{getParams as g}; +//# sourceMappingURL=get-element-params.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/get-element-params.min.mjs.map b/docs/vendor/swiper-bundle/shared/get-element-params.min.mjs.map new file mode 100644 index 0000000..883b699 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/get-element-params.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"get-element-params.mjs.mjs","names":["extend","isObject","attrToProp","paramsList","defaults","formatValue","val","parseFloat","Number","includes","v","JSON","parse","err","modulesParamsList","getParams","element","propName","propValue","params","passedParams","localParamsList","allowedParams","map","key","replace","forEach","paramName","attrsList","attributes","push","name","value","attr","moduleParam","filter","mParam","indexOf","parentObjName","subObjName","split","enabled","constructor","Object","navigation","prevEl","nextEl","scrollbar","el","pagination"],"sources":["0"],"mappings":"YAAcA,YAAaC,cAAeC,gBAAiBC,eAAkB,sCAC/DC,aAAgB,wBAE9B,MAAMC,YAAcC,IAClB,GAAIC,WAAWD,KAASE,OAAOF,GAAM,OAAOE,OAAOF,GACnD,GAAY,SAARA,EAAgB,OAAO,EAC3B,GAAY,KAARA,EAAY,OAAO,EACvB,GAAY,UAARA,EAAiB,OAAO,EAC5B,GAAY,SAARA,EAAgB,OAAO,KAC3B,GAAY,cAARA,EAAJ,CACA,GAAmB,iBAARA,GAAoBA,EAAIG,SAAS,MAAQH,EAAIG,SAAS,MAAQH,EAAIG,SAAS,KAAM,CAC1F,IAAIC,EACJ,IACEA,EAAIC,KAAKC,MAAMN,EACjB,CAAE,MAAOO,GACPH,EAAIJ,CACN,CACA,OAAOI,CACT,CACA,OAAOJ,CAVkC,CAU/B,EAENQ,kBAAoB,CAAC,OAAQ,WAAY,aAAc,eAAgB,mBAAoB,kBAAmB,cAAe,cAAe,cAAe,YAAa,OAAQ,kBAAmB,UAAW,WAAY,aAAc,aAAc,aAAc,WAAY,YAAa,SAAU,UAAW,QACxT,SAASC,UAAUC,EAASC,EAAUC,GACpC,MAAMC,EAAS,CAAC,EACVC,EAAe,CAAC,EACtBpB,OAAOmB,EAAQf,UACf,MAAMiB,EAAkB,IAAIlB,WAAY,MAClCmB,EAAgBD,EAAgBE,KAAIC,GAAOA,EAAIC,QAAQ,IAAK,MAGlEJ,EAAgBK,SAAQC,IACtBA,EAAYA,EAAUF,QAAQ,IAAK,SACD,IAAvBT,EAAQW,KACjBP,EAAaO,GAAaX,EAAQW,GACpC,IAIF,MAAMC,EAAY,IAAIZ,EAAQa,YA6D9B,MA5DwB,iBAAbZ,QAA8C,IAAdC,GACzCU,EAAUE,KAAK,CACbC,KAAMd,EACNe,MAAO/B,SAASiB,GAAa,IACxBA,GACDA,IAGRU,EAAUF,SAAQO,IAChB,MAAMC,EAAcpB,kBAAkBqB,QAAOC,GAA8C,IAApCH,EAAKF,KAAKM,QAAQ,GAAGD,QAAkB,GAC9F,GAAIF,EAAa,CACf,MAAMI,EAAgBpC,WAAWgC,GAC3BK,EAAarC,WAAW+B,EAAKF,KAAKS,MAAM,GAAGN,MAAgB,SACtB,IAAhCd,EAAakB,KAAgClB,EAAakB,GAAiB,CAAC,IACnD,IAAhClB,EAAakB,KACflB,EAAakB,GAAiB,CAC5BG,SAAS,IAGbrB,EAAakB,GAAeC,GAAclC,YAAY4B,EAAKD,MAC7D,KAAO,CACL,MAAMD,EAAO7B,WAAW+B,EAAKF,MAC7B,IAAKT,EAAcb,SAASsB,GAAO,OACnC,MAAMC,EAAQ3B,YAAY4B,EAAKD,OAC3BZ,EAAaW,IAASjB,kBAAkBL,SAASwB,EAAKF,QAAU9B,SAAS+B,IACvEZ,EAAaW,GAAMW,cAAgBC,SACrCvB,EAAaW,GAAQ,CAAC,GAExBX,EAAaW,GAAMU,UAAYT,GAE/BZ,EAAaW,GAAQC,CAEzB,KAEFhC,OAAOmB,EAAQC,GACXD,EAAOyB,WACTzB,EAAOyB,WAAa,CAClBC,OAAQ,sBACRC,OAAQ,0BACkB,IAAtB3B,EAAOyB,WAAsBzB,EAAOyB,WAAa,CAAC,IAEzB,IAAtBzB,EAAOyB,mBACTzB,EAAOyB,WAEZzB,EAAO4B,UACT5B,EAAO4B,UAAY,CACjBC,GAAI,wBACqB,IAArB7B,EAAO4B,UAAqB5B,EAAO4B,UAAY,CAAC,IAExB,IAArB5B,EAAO4B,kBACT5B,EAAO4B,UAEZ5B,EAAO8B,WACT9B,EAAO8B,WAAa,CAClBD,GAAI,yBACsB,IAAtB7B,EAAO8B,WAAsB9B,EAAO8B,WAAa,CAAC,IAEzB,IAAtB9B,EAAO8B,mBACT9B,EAAO8B,WAET,CACL9B,SACAC,eAEJ,QAESL"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/get-element-params.mjs b/docs/vendor/swiper-bundle/shared/get-element-params.mjs new file mode 100644 index 0000000..eb00b03 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/get-element-params.mjs @@ -0,0 +1,106 @@ +import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; +}; +const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; +function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; +} + +export { getParams as g }; diff --git a/docs/vendor/swiper-bundle/shared/ssr-window.esm.min.mjs b/docs/vendor/swiper-bundle/shared/ssr-window.esm.min.mjs new file mode 100644 index 0000000..4ee44c8 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/ssr-window.esm.min.mjs @@ -0,0 +1,2 @@ +function isObject(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function extend(e,t){void 0===e&&(e={}),void 0===t&&(t={}),Object.keys(t).forEach((n=>{void 0===e[n]?e[n]=t[n]:isObject(t[n])&&isObject(e[n])&&Object.keys(t[n]).length>0&&extend(e[n],t[n])}))}const ssrDocument={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function getDocument(){const e="undefined"!=typeof document?document:{};return extend(e,ssrDocument),e}const ssrWindow={document:ssrDocument,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function getWindow(){const e="undefined"!=typeof window?window:{};return extend(e,ssrWindow),e}export{getWindow as a,getDocument as g}; +//# sourceMappingURL=ssr-window.esm.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/ssr-window.esm.min.mjs.map b/docs/vendor/swiper-bundle/shared/ssr-window.esm.min.mjs.map new file mode 100644 index 0000000..2a3d646 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/ssr-window.esm.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"ssr-window.esm.mjs.mjs","names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window"],"sources":["0"],"mappings":"AAYA,SAASA,SAASC,GAChB,OAAe,OAARA,GAA+B,iBAARA,GAAoB,gBAAiBA,GAAOA,EAAIC,cAAgBC,MAChG,CACA,SAASC,OAAOC,EAAQC,QACP,IAAXD,IACFA,EAAS,CAAC,QAEA,IAARC,IACFA,EAAM,CAAC,GAETH,OAAOI,KAAKD,GAAKE,SAAQC,SACI,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAAcT,SAASM,EAAIG,KAAST,SAASK,EAAOI,KAASN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GACpJN,OAAOC,EAAOI,GAAMH,EAAIG,GAC1B,GAEJ,CACA,MAAME,YAAc,CAClBC,KAAM,CAAC,EACP,gBAAAC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBC,cAAe,CACb,IAAAC,GAAQ,EACRC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACL,SAAAC,GAAa,IAGjBC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,CAAC,EACR,YAAAC,GAAgB,EAChBC,qBAAoB,IACX,KAIbC,gBAAe,KACN,CAAC,GAEVC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGZ,SAASC,cACP,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,CAAC,EAE1D,OADAtC,OAAOqC,EAAK9B,aACL8B,CACT,CACA,MAAME,UAAY,CAChBD,SAAU/B,YACViC,UAAW,CACTC,UAAW,IAEbd,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVO,QAAS,CACP,YAAAC,GAAgB,EAChB,SAAAC,GAAa,EACb,EAAAC,GAAM,EACN,IAAAC,GAAQ,GAEVC,YAAa,WACX,OAAOC,IACT,EACA,gBAAAvC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBuC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIb,KAAAC,GAAS,EACT,IAAAC,GAAQ,EACRC,OAAQ,CAAC,EACT,UAAAC,GAAc,EACd,YAAAC,GAAgB,EAChBC,WAAU,KACD,CAAC,GAEVC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9B,oBAAAC,CAAqBC,GACO,oBAAfN,YAGXC,aAAaK,EACf,GAEF,SAASC,YACP,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,CAAC,EAEtD,OADA/D,OAAO8D,EAAKvB,WACLuB,CACT,QAESD,eAAgBzB"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/ssr-window.esm.mjs b/docs/vendor/swiper-bundle/shared/ssr-window.esm.mjs new file mode 100644 index 0000000..874f0e9 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/ssr-window.esm.mjs @@ -0,0 +1,145 @@ +/** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ +/* eslint-disable no-param-reassign */ +function isObject(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; +} +function extend(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + extend(target[key], src[key]); + } + }); +} +const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } +}; +function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend(doc, ssrDocument); + return doc; +} +const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } +}; +function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend(win, ssrWindow); + return win; +} + +export { getWindow as a, getDocument as g }; diff --git a/docs/vendor/swiper-bundle/shared/swiper-core.min.mjs b/docs/vendor/swiper-bundle/shared/swiper-core.min.mjs new file mode 100644 index 0000000..f1b5357 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/swiper-core.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";import{a as elementParents,p as elementStyle,e as elementChildren,s as setCSSProperty,f as elementOuterSize,q as elementNextAll,r as elementPrevAll,j as getTranslate,t as animateCSSModeScroll,n as nextTick,u as showWarning,c as createElement,v as elementIsChildOf,d as now,w as extend,h as elementIndex,x as deleteProps}from"./utils.min.mjs";let support,deviceCached,browser;function calcSupport(){const e=getWindow(),t=getDocument();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}function getSupport(){return support||(support=calcSupport()),support}function calcDevice(e){let{userAgent:t}=void 0===e?{}:e;const s=getSupport(),i=getWindow(),r=i.navigator.platform,n=t||i.navigator.userAgent,a={ios:!1,android:!1},l=i.screen.width,o=i.screen.height,d=n.match(/(Android);?[\s\/]+([\d.]+)?/);let c=n.match(/(iPad).*OS\s([\d_]+)/);const p=n.match(/(iPod)(.*OS\s([\d_]+))?/),u=!c&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===r;let m="MacIntel"===r;return!c&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${o}`)>=0&&(c=n.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),m=!1),d&&!h&&(a.os="android",a.android=!0),(c||u||p)&&(a.os="ios",a.ios=!0),a}function getDevice(e){return void 0===e&&(e={}),deviceCached||(deviceCached=calcDevice(e)),deviceCached}function calcBrowser(){const e=getWindow(),t=getDevice();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=i();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||r&&t.ios,isWebView:r}}function getBrowser(){return browser||(browser=calcBrowser()),browser}function Resize(e){let{swiper:t,on:s,emit:i}=e;const r=getWindow();let n=null,a=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},o=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{a=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),n.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",o))})),s("destroy",(()=>{a&&r.cancelAnimationFrame(a),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",o)}))}function Observer(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const n=[],a=getWindow(),l=function(e,s){void 0===s&&(s={});const i=new(a.MutationObserver||a.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};a.requestAnimationFrame?a.requestAnimationFrame(s):a.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=elementParents(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}var eventsEmitter={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};function updateSize(){const e=this;let t,s;const i=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:i.clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:i.clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(elementStyle(i,"padding-left")||0,10)-parseInt(elementStyle(i,"padding-right")||0,10),s=s-parseInt(elementStyle(i,"padding-top")||0,10)-parseInt(elementStyle(i,"padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))}function updateSlides(){const e=this;function t(t,s){return parseFloat(t.getPropertyValue(e.getDirectionLabel(s))||0)}const s=e.params,{wrapperEl:i,slidesEl:r,size:n,rtlTranslate:a,wrongRTL:l}=e,o=e.virtual&&s.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=elementChildren(r,`.${e.params.slideClass}, swiper-slide`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=s.slidesOffsetBefore;"function"==typeof f&&(f=s.slidesOffsetBefore.call(e));let v=s.slidesOffsetAfter;"function"==typeof v&&(v=s.slidesOffsetAfter.call(e));const g=e.snapGrid.length,w=e.slidesGrid.length;let S=s.spaceBetween,T=-f,b=0,x=0;if(void 0===n)return;"string"==typeof S&&S.indexOf("%")>=0?S=parseFloat(S.replace("%",""))/100*n:"string"==typeof S&&(S=parseFloat(S)),e.virtualSize=-S,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(setCSSProperty(i,"--swiper-centered-offset-before",""),setCSSProperty(i,"--swiper-centered-offset-after",""));const y=s.grid&&s.grid.rows>1&&e.grid;let E;y?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const C="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-n)}if(o&&s.loop){const t=m[0]+S;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${S}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(S||0)})),e-=S;const t=e-n;u=u.map((e=>e<=0?-f:e>t?t+v:e))}if(s.centerInsufficientSlides){let e=0;m.forEach((t=>{e+=t+(S||0)})),e-=S;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{u[t]=e-s})),h.forEach(((e,t)=>{h[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){setCSSProperty(i,"--swiper-centered-offset-before",-u[0]+"px"),setCSSProperty(i,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),u.length!==g&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==w&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}}function updateAutoHeight(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)}function updateSlidesOffset(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};function updateSlidesProgress(e){void 0===e&&(e=this&&this.translate||0);const t=this,s=t.params,{slides:i,rtlTranslate:r,snapGrid:n}=t;if(0===i.length)return;void 0===i[0].swiperSlideOffset&&t.updateSlidesOffset();let a=-e;r&&(a=e),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&h<=t.size||u<=0&&h>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),toggleSlideClasses$1(o,f,s.slideVisibleClass),toggleSlideClasses$1(o,m,s.slideFullyVisibleClass),o.progress=r?-c:c,o.originalProgress=r?-p:p}}function updateProgress(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:l}=t;const o=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=l||r>=1,s&&(r=0),l&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=r?(o-r)/a:(o+a-n)/a,l>1&&(l-=1)}Object.assign(t,{progress:r,progressLoop:l,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!o&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(o&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)}const toggleSlideClasses=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};function updateSlidesClasses(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,l=e=>elementChildren(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${r}"]`);else a?(o=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):o=t[r];o&&(a||(c=elementNextAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=elementPrevAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{toggleSlideClasses(e,e===o,s.slideActiveClass),toggleSlideClasses(e,e===c,s.slideNextClass),toggleSlideClasses(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()}const processLazyPreloader=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},unlazy=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},preload=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&unlazy(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&unlazy(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=getActiveIndexByTranslate(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/r.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===n&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&preload(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))}function updateClickedSlide(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;eo?o:i&&ea?"next":n=o.length&&(v=o.length-1);const g=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(u?g>n.translate&&g>n.minTranslate():gn.translate&&g>n.maxTranslate()&&(p||0)!==a)return!1}let w;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(g),w=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return animateCSSModeScroll({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(g),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,w),0===t?n.transitionEnd(s,w):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,w))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0}function slideToLoop(e,t,s,i){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let l=r.params.slidesPerView;"auto"===l?l=r.slidesPerViewDynamic():(l=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&l%2==0&&(l+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r}function slideNext(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)}function slidePrev(e,t,s){void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:l,enabled:o,animating:d}=i;if(!o||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?i.translate:-i.translate),h=n.map((e=>p(e)));let m=n[h.indexOf(u)-1];if(void 0===m&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(m=n[e>0?e-1:e])}let f=0;if(void 0!==m&&(f=a.indexOf(m),f<0&&(f=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(f=f-i.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(f,e,t,s)})),!0):i.slideTo(f,e,t,s)}function slideReset(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)}function slideToClosest(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),l=a+Math.floor((n-a)/r.params.slidesPerGroup),o=r.rtlTranslate?r.translate:-r.translate;if(o>=r.snapGrid[l]){const e=r.snapGrid[l];o-e>(r.snapGrid[l+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[l-1];o-e<=(r.snapGrid[l]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)}function slideToClickedSlide(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const a=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(elementChildren(s,`${a}[data-swiper-slide-index="${r}"]`)[0]),nextTick((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(elementChildren(s,`${a}[data-swiper-slide-index="${r}"]`)[0]),nextTick((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{elementChildren(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),l=t.slides.length%a!=0,o=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):b=n;const x="next"===i||!i,y="prev"===i||!i;let E=0,C=0;const M=w?Math.ceil(d.length/h.grid.rows):d.length,P=(w?d[n].column:n)+(m&&void 0===r?-f/2+.5:0);if(P=0;t-=1)d[t].column===e&&S.push(t)}else S.push(M-t-1)}}else if(P+f>M-g){C=Math.max(P-(M-2*g),v);for(let e=0;e{e.column===t&&T.push(s)})):T.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),y&&S.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===h.slidesPerView?o.updateSlides():w&&(S.length>0&&y||T.length>0&&x)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),h.watchSlidesProgress&&o.updateSlidesOffset(),s)if(S.length>0&&y){if(void 0===t){const e=o.slidesGrid[b],t=o.slidesGrid[b+E]-e;l?o.setTranslate(o.translate-t):(o.slideTo(b+Math.ceil(E),0,!1,!0),r&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(r){const e=w?S.length/h.grid.rows:S.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(T.length>0&&x)if(void 0===t){const e=o.slidesGrid[b],t=o.slidesGrid[b-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(b-C,0,!1,!0),r&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=w?T.length/h.grid.rows:T.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===h.slidesPerView&&s})}o.emit("loopFix")}function loopDestroy(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))}function unsetGrabCursor(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function closestElement(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===getDocument()||s===getWindow())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}function preventEdgeSwipe(e,t,s){const i=getWindow(),{params:r}=e,n=r.edgeSwipeDetection,a=r.edgeSwipeThreshold;return!n||!(s<=a||s>=i.innerWidth-a)||"prevent"===n&&(t.preventDefault(),!0)}function onTouchStart(e){const t=this,s=getDocument();let i=e;i.originalEvent&&(i=i.originalEvent);const r=t.touchEventsData;if("pointerdown"===i.type){if(null!==r.pointerId&&r.pointerId!==i.pointerId)return;r.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(r.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void preventEdgeSwipe(t,i,i.targetTouches[0].pageX);const{params:n,touches:a,enabled:l}=t;if(!l)return;if(!n.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&n.preventInteractionOnTransition)return;!t.animating&&n.cssMode&&n.loop&&t.loopFix();let o=i.target;if("wrapper"===n.touchEventsTarget&&!elementIsChildOf(o,t.wrapperEl))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(r.isTouched&&r.isMoved)return;const d=!!n.noSwipingClass&&""!==n.noSwipingClass,c=i.composedPath?i.composedPath():i.path;d&&i.target&&i.target.shadowRoot&&c&&(o=c[0]);const p=n.noSwipingSelector?n.noSwipingSelector:`.${n.noSwipingClass}`,u=!(!i.target||!i.target.shadowRoot);if(n.noSwiping&&(u?closestElement(p,o):o.closest(p)))return void(t.allowClick=!0);if(n.swipeHandler&&!o.closest(n.swipeHandler))return;a.currentX=i.pageX,a.currentY=i.pageY;const h=a.currentX,m=a.currentY;if(!preventEdgeSwipe(t,i,h))return;Object.assign(r,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),a.startX=h,a.startY=m,r.touchStartTime=now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,n.threshold>0&&(r.allowThresholdMove=!1);let f=!0;o.matches(r.focusableElements)&&(f=!1,"SELECT"===o.nodeName&&(r.isTouched=!1)),s.activeElement&&s.activeElement.matches(r.focusableElements)&&s.activeElement!==o&&s.activeElement.blur();const v=f&&t.allowTouchMove&&n.touchStartPreventDefault;!n.touchStartForcePreventDefault&&!v||o.isContentEditable||i.preventDefault(),n.freeMode&&n.freeMode.enabled&&t.freeMode&&t.animating&&!n.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function onTouchMove(e){const t=getDocument(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:a,enabled:l}=s;if(!l)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let o,d=e;if(d.originalEvent&&(d=d.originalEvent),"pointermove"===d.type){if(null!==i.touchId)return;if(d.pointerId!==i.pointerId)return}if("touchmove"===d.type){if(o=[...d.changedTouches].filter((e=>e.identifier===i.touchId))[0],!o||o.identifier!==i.touchId)return}else o=d;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",d));const c=o.pageX,p=o.pageY;if(d.preventedByNestedSwiper)return n.startX=c,void(n.startY=p);if(!s.allowTouchMove)return d.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:c,startY:p,currentX:c,currentY:p}),i.touchStartTime=now()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(pn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(cn.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&d.target===t.activeElement&&d.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",d),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=c,n.currentY=p;const u=n.currentX-n.startX,h=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(u**2+h**2)=25&&(e=180*Math.atan2(Math.abs(h),Math.abs(u))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",d),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling||"touchmove"===d.type&&i.preventTouchMoveFromPointerMove)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&d.cancelable&&d.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&d.stopPropagation();let m=s.isHorizontal()?u:h,f=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(m=Math.abs(m)*(a?1:-1),f=Math.abs(f)*(a?1:-1)),n.diff=m,m*=r.touchRatio,a&&(m=-m,f=-f);const v=s.touchesDirection;s.swipeDirection=m>0?"prev":"next",s.touchesDirection=f>0?"prev":"next";const g=s.params.loop&&!r.cssMode,w="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(g&&w&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",d)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&v!==s.touchesDirection&&g&&w&&Math.abs(m)>=1)return Object.assign(n,{startX:c,startY:p,currentX:c,currentY:p,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",d),i.isMoved=!0,i.currentTranslate=m+i.startTranslate;let S=!0,T=r.resistanceRatio;if(r.touchReleaseOnEdges&&(T=0),m>0?(g&&w&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(S=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+m)**T))):m<0&&(g&&w&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(m)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function onTouchEnd(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:a,rtlTranslate:l,slidesGrid:o,enabled:d}=t;if(!d)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const c=now(),p=c-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),p<300&&c-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=now(),nextTick((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===a.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let u;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,u=n.followFinger?l?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:u});const h=u>=-t.maxTranslate()&&!t.params.loop;let m=0,f=t.slidesSizesGrid[0];for(let e=0;e=o[e]&&u=o[e])&&(m=e,f=o[o.length-1]-o[o.length-2])}let v=null,g=null;n.rewind&&(t.isBeginning?g=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(v=0));const w=(u-o[m])/f,S=mn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?v:m+S):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-n.longSwipesRatio?t.slideTo(m+S):null!==g&&w<0&&Math.abs(w)>n.longSwipesRatio?t.slideTo(g):t.slideTo(m))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(m+S):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==v?v:m+S),"prev"===t.swipeDirection&&t.slideTo(null!==g?g:m))}}function onResize(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function onClick(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function onScroll(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function onLoad(e){const t=this;processLazyPreloader(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function onDocumentTouchStart(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const events=(e,t)=>{const s=getDocument(),{params:i,el:r,wrapperEl:n,device:a}=e,l=!!i.nested,o="on"===t?"addEventListener":"removeEventListener",d=t;r&&"string"!=typeof r&&(s[o]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),r[o]("touchstart",e.onTouchStart,{passive:!1}),r[o]("pointerdown",e.onTouchStart,{passive:!1}),s[o]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[o]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[o]("touchend",e.onTouchEnd,{passive:!0}),s[o]("pointerup",e.onTouchEnd,{passive:!0}),s[o]("pointercancel",e.onTouchEnd,{passive:!0}),s[o]("touchcancel",e.onTouchEnd,{passive:!0}),s[o]("pointerout",e.onTouchEnd,{passive:!0}),s[o]("pointerleave",e.onTouchEnd,{passive:!0}),s[o]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[o]("click",e.onClick,!0),i.cssMode&&n[o]("scroll",e.onScroll),i.updateOnWindowResize?e[d](a.ios||a.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):e[d]("observerUpdate",onResize,!0),r[o]("load",e.onLoad,{capture:!0}))};function attachEvents(){const e=this,{params:t}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),e.onDocumentTouchStart=onDocumentTouchStart.bind(e),t.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e),e.onLoad=onLoad.bind(e),events(e,"on")}function detachEvents(){events(this,"off")}var events$1={attachEvents:attachEvents,detachEvents:detachEvents};const isGridEnabled=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;function setBreakpoint(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const l=(a in n?n[a]:void 0)||e.originalParams,o=isGridEnabled(e,i),d=isGridEnabled(e,l),c=e.params.grabCursor,p=l.grabCursor,u=i.enabled;o&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),c&&!p?e.unsetGrabCursor():!c&&p&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=i[t]&&i[t].enabled,r=l[t]&&l[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const h=l.direction&&l.direction!==i.direction,m=i.loop&&(l.slidesPerView!==i.slidesPerView||h),f=i.loop;h&&s&&e.changeDirection(),extend(e.params,l);const v=e.params.enabled,g=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),u&&!v?e.disable():!u&&v&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",l),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!f&&g?(e.loopCreate(t),e.updateSlides()):f&&!g&&e.loopDestroy()),e.emit("breakpoint",l)}function getBreakpoint(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=getWindow(),n="window"===t?r.innerHeight:s.clientHeight,a=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));a.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}function addClasses(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=prepareClasses(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()}function removeClasses(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}var classes={addClasses:addClasses,removeClasses:removeClasses};function checkOverflow(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:i}=s;if(i){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*i;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}var checkOverflow$1={checkOverflow:checkOverflow},defaults={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function moduleExtendParams(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),extend(t,s)):extend(t,s)):extend(t,s)}}const prototypes={eventsEmitter:eventsEmitter,update:update,translate:translate,transition:transition,slide:slide,loop:loop,grabCursor:grabCursor,events:events$1,breakpoints:breakpoints,checkOverflow:checkOverflow$1,classes:classes},extendedDefaults={};class Swiper{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const i=extend({},t,{el:s});e.push(new Swiper(i))})),e}const a=this;a.__swiper__=!0,a.support=getSupport(),a.device=getDevice({userAgent:t.userAgent}),a.browser=getBrowser(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],t.modules&&Array.isArray(t.modules)&&a.modules.push(...t.modules);const l={};a.modules.forEach((e=>{e({params:t,swiper:a,extendParams:moduleExtendParams(t,l),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})}));const o=extend({},defaults,l);return a.params=extend({},o,extendedDefaults,t),a.originalParams=extend({},a.params),a.passedParams=extend({},t),a.params&&a.params.on&&Object.keys(a.params.on).forEach((e=>{a.on(e,a.params.on[e])})),a.params&&a.params.onAny&&a.onAny(a.params.onAny),Object.assign(a,{enabled:a.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===a.params.direction,isVertical:()=>"vertical"===a.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:a.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:a.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),a.emit("_swiper"),a.params.init&&a.init(),a}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=elementChildren(t,`.${s.slideClass}, swiper-slide`),r=elementIndex(i[0]);return elementIndex(e)-r}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=elementChildren(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?Math.ceil(i[l].swiperSlideSize):0;for(let s=l+1;sa&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>a&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){r[l]-r[e]{t.complete&&processLazyPreloader(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return elementChildren(s,i())[0]})();return!r&&t.params.createElements&&(r=createElement("div",t.params.wrapperClass),s.append(r),elementChildren(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction")),wrongRTL:"-webkit-box"===elementStyle(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?processLazyPreloader(t,e):e.addEventListener("load",(e=>{processLazyPreloader(t,e.target)}))})),preload(t),t.initialized=!0,preload(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),n&&n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),deleteProps(s)),s.destroyed=!0),null}static extendDefaults(e){extend(extendedDefaults,e)}static get extendedDefaults(){return extendedDefaults}static get defaults(){return defaults}static installModule(e){Swiper.prototype.__modules__||(Swiper.prototype.__modules__=[]);const t=Swiper.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>Swiper.installModule(e))),Swiper):(Swiper.installModule(e),Swiper)}}Object.keys(prototypes).forEach((e=>{Object.keys(prototypes[e]).forEach((t=>{Swiper.prototype[t]=prototypes[e][t]}))})),Swiper.use([Resize,Observer]);export{Swiper as S,defaults as d}; +//# sourceMappingURL=swiper-core.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/swiper-core.min.mjs.map b/docs/vendor/swiper-bundle/shared/swiper-core.min.mjs.map new file mode 100644 index 0000000..0b1eea0 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/swiper-core.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-core.mjs.mjs","names":["getWindow","getDocument","elementParents","elementStyle","elementChildren","setCSSProperty","elementOuterSize","elementNextAll","elementPrevAll","getTranslate","animateCSSModeScroll","nextTick","showWarning","createElement","elementIsChildOf","now","extend","elementIndex","deleteProps","support","deviceCached","browser","calcSupport","window","document","smoothScroll","documentElement","style","touch","DocumentTouch","getSupport","calcDevice","_temp","userAgent","platform","navigator","ua","device","ios","android","screenWidth","screen","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","indexOf","os","getDevice","overrides","calcBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","split","map","num","Number","isWebView","test","isSafariBrowser","need3dFix","getBrowser","Resize","_ref","swiper","on","emit","observer","animationFrame","resizeHandler","destroyed","initialized","orientationChangeHandler","params","resizeObserver","ResizeObserver","entries","requestAnimationFrame","newWidth","newHeight","forEach","_ref2","contentBoxSize","contentRect","target","el","inlineSize","blockSize","observe","addEventListener","cancelAnimationFrame","unobserve","removeEventListener","Observer","extendParams","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","__preventObserver__","length","observerUpdate","setTimeout","attributes","childList","isElement","characterData","push","observeParents","observeSlideChildren","containerParents","hostEl","i","wrapperEl","disconnect","splice","eventsEmitter","events","handler","priority","self","this","eventsListeners","method","event","once","onceHandler","off","__emitterProxy","_len","arguments","args","Array","_key","apply","onAny","eventsAnyListeners","offAny","index","eventHandler","data","context","_len2","_key2","isArray","slice","unshift","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","Object","assign","size","updateSlides","getDirectionPropertyValue","node","label","parseFloat","getPropertyValue","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","call","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","replace","virtualSize","slideEl","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","unsetSlides","shouldResetSlideSize","slidesPerView","breakpoints","keys","filter","key","slide","updateSlide","slideStyles","getComputedStyle","currentTransform","transform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","offsetWidth","Math","floor","swiperSlideSize","abs","slidesPerGroup","min","slidesPerGroupSkip","max","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","loop","groups","ceil","slidesBefore","slidesAfter","groupSize","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","classList","contains","maxBackfaceHiddenSlides","add","remove","updateAutoHeight","speed","activeSlides","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","activeIndex","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","toggleSlideClasses$1","condition","className","updateSlidesProgress","translate","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","progress","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","toggleSlideClasses","updateSlidesClasses","getFilteredSlide","selector","activeSlide","prevSlide","nextSlide","column","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","processLazyPreloader","imageEl","closest","lazyEl","querySelector","lazyPreloaderClass","shadowRoot","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","len","slidesPerViewDynamic","activeColumn","preloadColumns","from","slideIndexLastInView","rewind","realIndex","getActiveIndexByTranslate","normalizeSlideIndex","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","getAttribute","runCallbacksOnInit","updateClickedSlide","path","pathEl","matches","slideFound","clickedSlide","undefined","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","axis","virtualTranslate","currentTranslate","setTranslate","byController","x","y","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","targetPosition","side","scrollTo","behavior","onTranslateToWrapperTransitionEnd","e","duration","transitionDuration","transitionDelay","transitionEmit","direction","step","dir","transitionStart","transitionEnd","transition","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","scrollSnapType","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","setAttribute","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","c","constructor","loopDestroy","newSlidesOrder","swiperSlideIndex","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","found","getRootNode","host","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","pointerType","targetEl","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","nodeName","activeElement","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","PI","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","CustomEvent","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","Date","getTime","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","clearTimeout","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","prop","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","a","b","matchMedia","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","autoheight","centered","removeClasses","classes","wasLocked","lastSlideRightEdge","checkOverflow$1","defaults","init","swiperElementNodeName","createElements","eventsPrefix","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","obj","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","prototype","toString","querySelectorAll","swipers","newParams","__swiper__","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","current","cls","join","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","element","mounted","parentNode","toUpperCase","getWrapperSelector","trim","getWrapper","slideSlots","lazyElements","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/swiper-core.mjs b/docs/vendor/swiper-bundle/shared/swiper-core.mjs new file mode 100644 index 0000000..6567151 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/swiper-core.mjs @@ -0,0 +1,3907 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; +import { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs'; + +let support; +function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; +} +function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; +} + +let deviceCached; +function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; +} +function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; +} + +let browser; +function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; +} +function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; +} + +function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); +} + +function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); +} + +/* eslint-disable no-underscore-dangle */ + +var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } +}; + +function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); +} + +function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } +} + +function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; +} + +function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } +} + +const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } +}; +function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } +} + +function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); +} + +const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } +}; +function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); +} + +const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } +}; +const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); +}; +const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } +}; + +function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; +} +function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } +} + +function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} + +var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide +}; + +function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; +} + +function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); +} + +function minTranslate() { + return -this.snapGrid[0]; +} + +function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; +} + +function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; +} + +var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo +}; + +function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); +} + +function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } +} + +function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); +} + +function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); +} + +var transition = { + setTransition, + transitionStart, + transitionEnd +}; + +function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; +} + +function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; +} + +/* eslint no-unused-vars: "off" */ +function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); +} + +function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} + +var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide +}; + +function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); +} + +function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); +} + +function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); +} + +var loop = { + loopCreate, + loopFix, + loopDestroy +}; + +function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +var grabCursor = { + setGrabCursor, + unsetGrabCursor +}; + +// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd +function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); +} +function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; +} +function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); +} + +function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); +} + +function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} + +function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} + +function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} + +function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); +} + +function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); +} + +function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } +} + +const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); +}; +function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); +} +function detachEvents() { + const swiper = this; + events(swiper, 'off'); +} +var events$1 = { + attachEvents, + detachEvents +}; + +const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; +}; +function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); +} + +function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; +} + +var breakpoints = { + setBreakpoint, + getBreakpoint +}; + +function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; +} +function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); +} + +function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); +} + +var classes = { + addClasses, + removeClasses +}; + +function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } +} +var checkOverflow$1 = { + checkOverflow +}; + +var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false +}; + +function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; +} + +/* eslint no-param-reassign: "off" */ +const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes +}; +const extendedDefaults = {}; +class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } +} +Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); +}); +Swiper.use([Resize, Observer]); + +export { Swiper as S, defaults as d }; diff --git a/docs/vendor/swiper-bundle/shared/update-on-virtual-data.min.mjs b/docs/vendor/swiper-bundle/shared/update-on-virtual-data.min.mjs new file mode 100644 index 0000000..54c8e04 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/update-on-virtual-data.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,p as paramsList,i as isObject,n as needsNavigation,a as needsPagination,b as needsScrollbar}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";function getParams(a,e){void 0===a&&(a={}),void 0===e&&(e=!0);const s={on:{}},n={},t={};extend(s,defaults),s._emitClasses=!0,s.init=!1;const r={},i=paramsList.map((a=>a.replace(/_/,""))),l=Object.assign({},a);return Object.keys(l).forEach((l=>{void 0!==a[l]&&(i.indexOf(l)>=0?isObject(a[l])?(s[l]={},t[l]={},extend(s[l],a[l]),extend(t[l],a[l])):(s[l]=a[l],t[l]=a[l]):0===l.search(/on[A-Z]/)&&"function"==typeof a[l]?e?n[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:s.on[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:r[l]=a[l])})),["navigation","pagination","scrollbar"].forEach((a=>{!0===s[a]&&(s[a]={}),!1===s[a]&&delete s[a]})),{params:s,passedParams:t,rest:r,events:n}}function mountSwiper(a,e){let{el:s,nextEl:n,prevEl:t,paginationEl:r,scrollbarEl:i,swiper:l}=a;needsNavigation(e)&&n&&t&&(l.params.navigation.nextEl=n,l.originalParams.navigation.nextEl=n,l.params.navigation.prevEl=t,l.originalParams.navigation.prevEl=t),needsPagination(e)&&r&&(l.params.pagination.el=r,l.originalParams.pagination.el=r),needsScrollbar(e)&&i&&(l.params.scrollbar.el=i,l.originalParams.scrollbar.el=i),l.init(s)}function getChangedParams(a,e,s,n,t){const r=[];if(!e)return r;const i=a=>{r.indexOf(a)<0&&r.push(a)};if(s&&n){const a=n.map(t),e=s.map(t);a.join("")!==e.join("")&&i("children"),n.length!==s.length&&i("children")}return paramsList.filter((a=>"_"===a[0])).map((a=>a.replace(/_/,""))).forEach((s=>{if(s in a&&s in e)if(isObject(a[s])&&isObject(e[s])){const n=Object.keys(a[s]),t=Object.keys(e[s]);n.length!==t.length?i(s):(n.forEach((n=>{a[s][n]!==e[s][n]&&i(s)})),t.forEach((n=>{a[s][n]!==e[s][n]&&i(s)})))}else a[s]!==e[s]&&i(s)})),r}const updateOnVirtualData=a=>{!a||a.destroyed||!a.params.virtual||a.params.virtual&&!a.params.virtual.enabled||(a.updateSlides(),a.updateProgress(),a.updateSlidesClasses(),a.parallax&&a.params.parallax&&a.params.parallax.enabled&&a.parallax.setTranslate())};export{getChangedParams as a,getParams as g,mountSwiper as m,updateOnVirtualData as u}; +//# sourceMappingURL=update-on-virtual-data.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/update-on-virtual-data.min.mjs.map b/docs/vendor/swiper-bundle/shared/update-on-virtual-data.min.mjs.map new file mode 100644 index 0000000..88b07d2 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/update-on-virtual-data.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-on-virtual-data.mjs.mjs","names":["extend","paramsList","isObject","needsNavigation","needsPagination","needsScrollbar","defaults","getParams","obj","splitEvents","params","on","events","passedParams","_emitClasses","init","rest","allowedParams","map","key","replace","plainObj","Object","assign","keys","forEach","indexOf","search","toLowerCase","substr","mountSwiper","_ref","swiperParams","el","nextEl","prevEl","paginationEl","scrollbarEl","swiper","navigation","originalParams","pagination","scrollbar","getChangedParams","oldParams","children","oldChildren","getKey","addKey","push","oldChildrenKeys","childrenKeys","join","length","filter","newKeys","oldKeys","newKey","oldKey","updateOnVirtualData","destroyed","virtual","enabled","updateSlides","updateProgress","updateSlidesClasses","parallax","setTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/update-on-virtual-data.mjs b/docs/vendor/swiper-bundle/shared/update-on-virtual-data.mjs new file mode 100644 index 0000000..0fc3050 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/update-on-virtual-data.mjs @@ -0,0 +1,130 @@ +import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +function getParams(obj, splitEvents) { + if (obj === void 0) { + obj = {}; + } + if (splitEvents === void 0) { + splitEvents = true; + } + const params = { + on: {} + }; + const events = {}; + const passedParams = {}; + extend(params, defaults); + params._emitClasses = true; + params.init = false; + const rest = {}; + const allowedParams = paramsList.map(key => key.replace(/_/, '')); + const plainObj = Object.assign({}, obj); + Object.keys(plainObj).forEach(key => { + if (typeof obj[key] === 'undefined') return; + if (allowedParams.indexOf(key) >= 0) { + if (isObject(obj[key])) { + params[key] = {}; + passedParams[key] = {}; + extend(params[key], obj[key]); + extend(passedParams[key], obj[key]); + } else { + params[key] = obj[key]; + passedParams[key] = obj[key]; + } + } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') { + if (splitEvents) { + events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } else { + params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } + } else { + rest[key] = obj[key]; + } + }); + ['navigation', 'pagination', 'scrollbar'].forEach(key => { + if (params[key] === true) params[key] = {}; + if (params[key] === false) delete params[key]; + }); + return { + params, + passedParams, + rest, + events + }; +} + +function mountSwiper(_ref, swiperParams) { + let { + el, + nextEl, + prevEl, + paginationEl, + scrollbarEl, + swiper + } = _ref; + if (needsNavigation(swiperParams) && nextEl && prevEl) { + swiper.params.navigation.nextEl = nextEl; + swiper.originalParams.navigation.nextEl = nextEl; + swiper.params.navigation.prevEl = prevEl; + swiper.originalParams.navigation.prevEl = prevEl; + } + if (needsPagination(swiperParams) && paginationEl) { + swiper.params.pagination.el = paginationEl; + swiper.originalParams.pagination.el = paginationEl; + } + if (needsScrollbar(swiperParams) && scrollbarEl) { + swiper.params.scrollbar.el = scrollbarEl; + swiper.originalParams.scrollbar.el = scrollbarEl; + } + swiper.init(el); +} + +function getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) { + const keys = []; + if (!oldParams) return keys; + const addKey = key => { + if (keys.indexOf(key) < 0) keys.push(key); + }; + if (children && oldChildren) { + const oldChildrenKeys = oldChildren.map(getKey); + const childrenKeys = children.map(getKey); + if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children'); + if (oldChildren.length !== children.length) addKey('children'); + } + const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, '')); + watchParams.forEach(key => { + if (key in swiperParams && key in oldParams) { + if (isObject(swiperParams[key]) && isObject(oldParams[key])) { + const newKeys = Object.keys(swiperParams[key]); + const oldKeys = Object.keys(oldParams[key]); + if (newKeys.length !== oldKeys.length) { + addKey(key); + } else { + newKeys.forEach(newKey => { + if (swiperParams[key][newKey] !== oldParams[key][newKey]) { + addKey(key); + } + }); + oldKeys.forEach(oldKey => { + if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key); + }); + } + } else if (swiperParams[key] !== oldParams[key]) { + addKey(key); + } + } + }); + return keys; +} + +const updateOnVirtualData = swiper => { + if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { + swiper.parallax.setTranslate(); + } +}; + +export { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u }; diff --git a/docs/vendor/swiper-bundle/shared/update-swiper.min.mjs b/docs/vendor/swiper-bundle/shared/update-swiper.min.mjs new file mode 100644 index 0000000..d2d6f64 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/update-swiper.min.mjs @@ -0,0 +1,2 @@ +const paramsList=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function extend(e,t){const i=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>i.indexOf(e)<0)).forEach((i=>{void 0===e[i]?e[i]=t[i]:isObject(t[i])&&isObject(e[i])&&Object.keys(t[i]).length>0?t[i].__swiper__?e[i]=t[i]:extend(e[i],t[i]):e[i]=t[i]}))}function needsNavigation(e){return void 0===e&&(e={}),e.navigation&&void 0===e.navigation.nextEl&&void 0===e.navigation.prevEl}function needsPagination(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}function needsScrollbar(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}function uniqueClasses(e){void 0===e&&(e="");const t=e.split(" ").map((e=>e.trim())).filter((e=>!!e)),i=[];return t.forEach((e=>{i.indexOf(e)<0&&i.push(e)})),i.join(" ")}function attrToProp(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}function wrapperClass(e){return void 0===e&&(e=""),e?e.includes("swiper-wrapper")?e:`swiper-wrapper ${e}`:"swiper-wrapper"}function updateSwiper(e){let{swiper:t,slides:i,passedParams:l,changedParams:n,nextEl:o,prevEl:r,scrollbarEl:a,paginationEl:s}=e;const d=n.filter((e=>"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:c,pagination:p,navigation:u,scrollbar:v,virtual:g,thumbs:b}=t;let f,_,w,h,S,E,m,C;n.includes("thumbs")&&l.thumbs&&l.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(f=!0),n.includes("controller")&&l.controller&&l.controller.control&&c.controller&&!c.controller.control&&(_=!0),n.includes("pagination")&&l.pagination&&(l.pagination.el||s)&&(c.pagination||!1===c.pagination)&&p&&!p.el&&(w=!0),n.includes("scrollbar")&&l.scrollbar&&(l.scrollbar.el||a)&&(c.scrollbar||!1===c.scrollbar)&&v&&!v.el&&(h=!0),n.includes("navigation")&&l.navigation&&(l.navigation.prevEl||r)&&(l.navigation.nextEl||o)&&(c.navigation||!1===c.navigation)&&u&&!u.prevEl&&!u.nextEl&&(S=!0);const x=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),c[e].prevEl=void 0,c[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),c[e].el=void 0,t[e].el=void 0))};if(n.includes("loop")&&t.isElement&&(c.loop&&!l.loop?E=!0:!c.loop&&l.loop?m=!0:C=!0),d.forEach((e=>{if(isObject(c[e])&&isObject(l[e]))Object.assign(c[e],l[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in l[e])||l[e].enabled||x(e);else{const t=l[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?c[e]=l[e]:!1===t&&x(e)}})),d.includes("controller")&&!_&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),n.includes("children")&&i&&g&&c.virtual.enabled?(g.slides=i,g.update(!0)):n.includes("virtual")&&g&&c.virtual.enabled&&(i&&(g.slides=i),g.update(!0)),n.includes("children")&&i&&c.loop&&(C=!0),f){b.init()&&b.update(!0)}_&&(t.controller.control=c.controller.control),w&&(!t.isElement||s&&"string"!=typeof s||(s=document.createElement("div"),s.classList.add("swiper-pagination"),s.part.add("pagination"),t.el.appendChild(s)),s&&(c.pagination.el=s),p.init(),p.render(),p.update()),h&&(!t.isElement||a&&"string"!=typeof a||(a=document.createElement("div"),a.classList.add("swiper-scrollbar"),a.part.add("scrollbar"),t.el.appendChild(a)),a&&(c.scrollbar.el=a),v.init(),v.updateSize(),v.setTranslate()),S&&(t.isElement&&(o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-button-next"),o.innerHTML=t.hostEl.constructor.nextButtonSvg,o.part.add("button-next"),t.el.appendChild(o)),r&&"string"!=typeof r||(r=document.createElement("div"),r.classList.add("swiper-button-prev"),r.innerHTML=t.hostEl.constructor.prevButtonSvg,r.part.add("button-prev"),t.el.appendChild(r))),o&&(c.navigation.nextEl=o),r&&(c.navigation.prevEl=r),u.init(),u.update()),n.includes("allowSlideNext")&&(t.allowSlideNext=l.allowSlideNext),n.includes("allowSlidePrev")&&(t.allowSlidePrev=l.allowSlidePrev),n.includes("direction")&&t.changeDirection(l.direction,!1),(E||C)&&t.loopDestroy(),(m||C)&&t.loopCreate(),t.update()}export{needsPagination as a,needsScrollbar as b,attrToProp as c,uniqueClasses as d,extend as e,isObject as i,needsNavigation as n,paramsList as p,updateSwiper as u,wrapperClass as w}; +//# sourceMappingURL=update-swiper.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/update-swiper.min.mjs.map b/docs/vendor/swiper-bundle/shared/update-swiper.min.mjs.map new file mode 100644 index 0000000..01b8986 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/update-swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-swiper.mjs.mjs","names":["paramsList","isObject","o","constructor","Object","prototype","toString","call","slice","__swiper__","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","length","needsNavigation","params","navigation","nextEl","prevEl","needsPagination","pagination","el","needsScrollbar","scrollbar","uniqueClasses","classNames","classes","split","map","c","trim","unique","push","join","attrToProp","attrName","replace","l","toUpperCase","wrapperClass","className","includes","updateSwiper","_ref","swiper","slides","passedParams","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","virtual","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","controller","control","destroyModule","mod","destroy","isElement","remove","undefined","loop","assign","enabled","newValue","update","init","document","createElement","classList","add","part","appendChild","render","updateSize","setTranslate","innerHTML","hostEl","nextButtonSvg","prevButtonSvg","allowSlideNext","allowSlidePrev","changeDirection","direction","loopDestroy","loopCreate"],"sources":["0"],"mappings":"AACA,MAAMA,WAAa,CAAC,eAAgB,eAAgB,mBAAoB,UAAW,OAAQ,aAAc,iBAAkB,wBAAyB,oBAAqB,eAAgB,SAAU,UAAW,uBAAwB,iBAAkB,SAAU,oBAAqB,WAAY,SAAU,UAAW,iCAAkC,YAAa,MAAO,sBAAuB,sBAAuB,YAAa,cAAe,iBAAkB,mBAAoB,UAAW,cAAe,kBAAmB,gBAAiB,iBAAkB,0BAA2B,QAAS,kBAAmB,sBAAuB,sBAAuB,kBAAmB,wBAAyB,sBAAuB,qBAAsB,sBAAuB,4BAA6B,iBAAkB,eAAgB,aAAc,aAAc,gBAAiB,eAAgB,cAAe,kBAAmB,eAAgB,gBAAiB,iBAAkB,aAAc,2BAA4B,2BAA4B,gCAAiC,sBAAuB,oBAAqB,cAAe,mBAAoB,uBAAwB,cAAe,gBAAiB,2BAA4B,uBAAwB,QAAS,uBAAwB,qBAAsB,sBAAuB,UAAW,kBAAmB,kBAAmB,gBAAiB,aAAc,iBAAkB,oBAAqB,mBAAoB,yBAA0B,aAAc,mBAAoB,oBAAqB,yBAA0B,iBAAkB,iBAAkB,kBAAmB,eAAgB,qBAAsB,sBAAuB,qBAAsB,WAAY,iBAAkB,uBAEluD,OAAQ,YAAa,cAAe,kBAAmB,aAAc,aAAc,aAAc,iBAAkB,cAAe,iBAAkB,UAAW,WAAY,aAAc,cAAe,cAAe,WAAY,aAAc,UAAW,UAAW,OAAQ,WAE/Q,SAASC,SAASC,GAChB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEC,aAAkE,WAAnDC,OAAOC,UAAUC,SAASC,KAAKL,GAAGM,MAAM,GAAI,KAAoBN,EAAEO,UACnI,CACA,SAASC,OAAOC,EAAQC,GACtB,MAAMC,EAAW,CAAC,YAAa,cAAe,aAC9CT,OAAOU,KAAKF,GAAKG,QAAOC,GAAOH,EAASI,QAAQD,GAAO,IAAGE,SAAQF,SACrC,IAAhBL,EAAOK,GAAsBL,EAAOK,GAAOJ,EAAII,GAAcf,SAASW,EAAII,KAASf,SAASU,EAAOK,KAASZ,OAAOU,KAAKF,EAAII,IAAMG,OAAS,EAChJP,EAAII,GAAKP,WAAYE,EAAOK,GAAOJ,EAAII,GAAUN,OAAOC,EAAOK,GAAMJ,EAAII,IAE7EL,EAAOK,GAAOJ,EAAII,EACpB,GAEJ,CACA,SAASI,gBAAgBC,GAIvB,YAHe,IAAXA,IACFA,EAAS,CAAC,GAELA,EAAOC,iBAAkD,IAA7BD,EAAOC,WAAWC,aAA8D,IAA7BF,EAAOC,WAAWE,MAC1G,CACA,SAASC,gBAAgBJ,GAIvB,YAHe,IAAXA,IACFA,EAAS,CAAC,GAELA,EAAOK,iBAA8C,IAAzBL,EAAOK,WAAWC,EACvD,CACA,SAASC,eAAeP,GAItB,YAHe,IAAXA,IACFA,EAAS,CAAC,GAELA,EAAOQ,gBAA4C,IAAxBR,EAAOQ,UAAUF,EACrD,CACA,SAASG,cAAcC,QACF,IAAfA,IACFA,EAAa,IAEf,MAAMC,EAAUD,EAAWE,MAAM,KAAKC,KAAIC,GAAKA,EAAEC,SAAQrB,QAAOoB,KAAOA,IACjEE,EAAS,GAIf,OAHAL,EAAQd,SAAQiB,IACVE,EAAOpB,QAAQkB,GAAK,GAAGE,EAAOC,KAAKH,EAAE,IAEpCE,EAAOE,KAAK,IACrB,CACA,SAASC,WAAWC,GAIlB,YAHiB,IAAbA,IACFA,EAAW,IAENA,EAASC,QAAQ,WAAWC,GAAKA,EAAEC,cAAcF,QAAQ,IAAK,KACvE,CACA,SAASG,aAAaC,GAIpB,YAHkB,IAAdA,IACFA,EAAY,IAETA,EACAA,EAAUC,SAAS,kBACjBD,EAD2C,kBAAkBA,IAD7C,gBAGzB,CAEA,SAASE,aAAaC,GACpB,IAAIC,OACFA,EAAMC,OACNA,EAAMC,aACNA,EAAYC,cACZA,EAAa9B,OACbA,EAAMC,OACNA,EAAM8B,YACNA,EAAWC,aACXA,GACEN,EACJ,MAAMO,EAAeH,EAActC,QAAOC,GAAe,aAARA,GAA8B,cAARA,GAA+B,iBAARA,KAE5FK,OAAQoC,EAAa/B,WACrBA,EAAUJ,WACVA,EAAUO,UACVA,EAAS6B,QACTA,EAAOC,OACPA,GACET,EACJ,IAAIU,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAd,EAAcN,SAAS,WAAaK,EAAaO,QAAUP,EAAaO,OAAOT,QAAUO,EAAcE,SAAWF,EAAcE,OAAOT,SACzIU,GAAiB,GAEfP,EAAcN,SAAS,eAAiBK,EAAagB,YAAchB,EAAagB,WAAWC,SAAWZ,EAAcW,aAAeX,EAAcW,WAAWC,UAC9JR,GAAqB,GAEnBR,EAAcN,SAAS,eAAiBK,EAAa1B,aAAe0B,EAAa1B,WAAWC,IAAM4B,KAAkBE,EAAc/B,aAA2C,IAA7B+B,EAAc/B,aAAyBA,IAAeA,EAAWC,KACnNmC,GAAqB,GAEnBT,EAAcN,SAAS,cAAgBK,EAAavB,YAAcuB,EAAavB,UAAUF,IAAM2B,KAAiBG,EAAc5B,YAAyC,IAA5B4B,EAAc5B,YAAwBA,IAAcA,EAAUF,KAC3MoC,GAAoB,GAElBV,EAAcN,SAAS,eAAiBK,EAAa9B,aAAe8B,EAAa9B,WAAWE,QAAUA,KAAY4B,EAAa9B,WAAWC,QAAUA,KAAYkC,EAAcnC,aAA2C,IAA7BmC,EAAcnC,aAAyBA,IAAeA,EAAWE,SAAWF,EAAWC,SACrRyC,GAAqB,GAEvB,MAAMM,EAAgBC,IACfrB,EAAOqB,KACZrB,EAAOqB,GAAKC,UACA,eAARD,GACErB,EAAOuB,YACTvB,EAAOqB,GAAK/C,OAAOkD,SACnBxB,EAAOqB,GAAKhD,OAAOmD,UAErBjB,EAAcc,GAAK/C,YAASmD,EAC5BlB,EAAcc,GAAKhD,YAASoD,EAC5BzB,EAAOqB,GAAK/C,YAASmD,EACrBzB,EAAOqB,GAAKhD,YAASoD,IAEjBzB,EAAOuB,WACTvB,EAAOqB,GAAK5C,GAAG+C,SAEjBjB,EAAcc,GAAK5C,QAAKgD,EACxBzB,EAAOqB,GAAK5C,QAAKgD,GACnB,EAyCF,GAvCItB,EAAcN,SAAS,SAAWG,EAAOuB,YACvChB,EAAcmB,OAASxB,EAAawB,KACtCX,GAAkB,GACRR,EAAcmB,MAAQxB,EAAawB,KAC7CV,GAAiB,EAEjBC,GAAiB,GAGrBX,EAAatC,SAAQF,IACnB,GAAIf,SAASwD,EAAczC,KAASf,SAASmD,EAAapC,IACxDZ,OAAOyE,OAAOpB,EAAczC,GAAMoC,EAAapC,IAClC,eAARA,GAAgC,eAARA,GAAgC,cAARA,KAAwB,YAAaoC,EAAapC,KAASoC,EAAapC,GAAK8D,SAChIR,EAActD,OAEX,CACL,MAAM+D,EAAW3B,EAAapC,IACZ,IAAb+D,IAAkC,IAAbA,GAAgC,eAAR/D,GAAgC,eAARA,GAAgC,cAARA,EAKhGyC,EAAczC,GAAOoC,EAAapC,IAJjB,IAAb+D,GACFT,EAActD,EAKpB,KAEEwC,EAAaT,SAAS,gBAAkBc,GAAsBX,EAAOkB,YAAclB,EAAOkB,WAAWC,SAAWZ,EAAcW,YAAcX,EAAcW,WAAWC,UACvKnB,EAAOkB,WAAWC,QAAUZ,EAAcW,WAAWC,SAEnDhB,EAAcN,SAAS,aAAeI,GAAUO,GAAWD,EAAcC,QAAQoB,SACnFpB,EAAQP,OAASA,EACjBO,EAAQsB,QAAO,IACN3B,EAAcN,SAAS,YAAcW,GAAWD,EAAcC,QAAQoB,UAC3E3B,IAAQO,EAAQP,OAASA,GAC7BO,EAAQsB,QAAO,IAEb3B,EAAcN,SAAS,aAAeI,GAAUM,EAAcmB,OAChET,GAAiB,GAEfP,EAAgB,CACED,EAAOsB,QACVtB,EAAOqB,QAAO,EACjC,CACInB,IACFX,EAAOkB,WAAWC,QAAUZ,EAAcW,WAAWC,SAEnDP,KACEZ,EAAOuB,WAAelB,GAAwC,iBAAjBA,IAC/CA,EAAe2B,SAASC,cAAc,OACtC5B,EAAa6B,UAAUC,IAAI,qBAC3B9B,EAAa+B,KAAKD,IAAI,cACtBnC,EAAOvB,GAAG4D,YAAYhC,IAEpBA,IAAcE,EAAc/B,WAAWC,GAAK4B,GAChD7B,EAAWuD,OACXvD,EAAW8D,SACX9D,EAAWsD,UAETjB,KACEb,EAAOuB,WAAenB,GAAsC,iBAAhBA,IAC9CA,EAAc4B,SAASC,cAAc,OACrC7B,EAAY8B,UAAUC,IAAI,oBAC1B/B,EAAYgC,KAAKD,IAAI,aACrBnC,EAAOvB,GAAG4D,YAAYjC,IAEpBA,IAAaG,EAAc5B,UAAUF,GAAK2B,GAC9CzB,EAAUoD,OACVpD,EAAU4D,aACV5D,EAAU6D,gBAER1B,IACEd,EAAOuB,YACJlD,GAA4B,iBAAXA,IACpBA,EAAS2D,SAASC,cAAc,OAChC5D,EAAO6D,UAAUC,IAAI,sBACrB9D,EAAOoE,UAAYzC,EAAO0C,OAAOzF,YAAY0F,cAC7CtE,EAAO+D,KAAKD,IAAI,eAChBnC,EAAOvB,GAAG4D,YAAYhE,IAEnBC,GAA4B,iBAAXA,IACpBA,EAAS0D,SAASC,cAAc,OAChC3D,EAAO4D,UAAUC,IAAI,sBACrB7D,EAAOmE,UAAYzC,EAAO0C,OAAOzF,YAAY2F,cAC7CtE,EAAO8D,KAAKD,IAAI,eAChBnC,EAAOvB,GAAG4D,YAAY/D,KAGtBD,IAAQkC,EAAcnC,WAAWC,OAASA,GAC1CC,IAAQiC,EAAcnC,WAAWE,OAASA,GAC9CF,EAAW2D,OACX3D,EAAW0D,UAET3B,EAAcN,SAAS,oBACzBG,EAAO6C,eAAiB3C,EAAa2C,gBAEnC1C,EAAcN,SAAS,oBACzBG,EAAO8C,eAAiB5C,EAAa4C,gBAEnC3C,EAAcN,SAAS,cACzBG,EAAO+C,gBAAgB7C,EAAa8C,WAAW,IAE7CjC,GAAmBE,IACrBjB,EAAOiD,eAELjC,GAAkBC,IACpBjB,EAAOkD,aAETlD,EAAO8B,QACT,QAESvD,qBAAsBG,oBAAqBY,gBAAiBV,mBAAoBpB,YAAaT,cAAemB,qBAAsBpB,gBAAiBgD,kBAAmBH"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/update-swiper.mjs b/docs/vendor/swiper-bundle/shared/update-swiper.mjs new file mode 100644 index 0000000..851604f --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/update-swiper.mjs @@ -0,0 +1,236 @@ +/* underscore in name -> watch for changes */ +const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', +// modules +'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; +} +function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); +} +function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; +} +function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; +} +function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; +} +function uniqueClasses(classNames) { + if (classNames === void 0) { + classNames = ''; + } + const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c); + const unique = []; + classes.forEach(c => { + if (unique.indexOf(c) < 0) unique.push(c); + }); + return unique.join(' '); +} +function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); +} +function wrapperClass(className) { + if (className === void 0) { + className = ''; + } + if (!className) return 'swiper-wrapper'; + if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`; + return className; +} + +function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); +} + +export { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w }; diff --git a/docs/vendor/swiper-bundle/shared/utils.min.mjs b/docs/vendor/swiper-bundle/shared/utils.min.mjs new file mode 100644 index 0000000..ac22df9 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/utils.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";function classesToTokens(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function deleteProps(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}function nextTick(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function now(){return Date.now()}function getComputedStyle(e){const t=getWindow();let n;return t.getComputedStyle&&(n=t.getComputedStyle(e,null)),!n&&e.currentStyle&&(n=e.currentStyle),n||(n=e.style),n}function getTranslate(e,t){void 0===t&&(t="x");const n=getWindow();let r,o,s;const l=getComputedStyle(e);return n.WebKitCSSMatrix?(o=l.transform||l.webkitTransform,o.split(",").length>6&&(o=o.split(", ").map((e=>e.replace(",","."))).join(", ")),s=new n.WebKitCSSMatrix("none"===o?"":o)):(s=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),r=s.toString().split(",")),"x"===t&&(o=n.WebKitCSSMatrix?s.m41:16===r.length?parseFloat(r[12]):parseFloat(r[4])),"y"===t&&(o=n.WebKitCSSMatrix?s.m42:16===r.length?parseFloat(r[13]):parseFloat(r[5])),o||0}function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function isNode(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function extend(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let n=1;nt.indexOf(e)<0));for(let t=0,o=n.length;ts?"next":"prev",m=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===i&&(i=l);const e=Math.max(Math.min((l-i)/a,1),0),c=.5-Math.cos(e*Math.PI)/2;let d=s+c*(n-s);if(m(d,n)&&(d=n),t.wrapperEl.scrollTo({[r]:d}),m(d,n))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[r]:d})})),void o.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=o.requestAnimationFrame(u)};u()}function getSlideTransformEl(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function elementChildren(e,t){void 0===t&&(t="");const n=[...e.children];return e instanceof HTMLSlotElement&&n.push(...e.assignedElements()),t?n.filter((e=>e.matches(t))):n}function elementIsChildOf(e,t){const n=t.contains(e);if(!n&&t instanceof HTMLSlotElement){return[...element.assignedElements()].includes(e)}return n}function showWarning(e){try{return void console.warn(e)}catch(e){}}function createElement(e,t){void 0===t&&(t=[]);const n=document.createElement(e);return n.classList.add(...Array.isArray(t)?t:classesToTokens(t)),n}function elementOffset(e){const t=getWindow(),n=getDocument(),r=e.getBoundingClientRect(),o=n.body,s=e.clientTop||o.clientTop||0,l=e.clientLeft||o.clientLeft||0,i=e===t?t.scrollY:e.scrollTop,a=e===t?t.scrollX:e.scrollLeft;return{top:r.top+i-s,left:r.left+a-l}}function elementPrevAll(e,t){const n=[];for(;e.previousElementSibling;){const r=e.previousElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementNextAll(e,t){const n=[];for(;e.nextElementSibling;){const r=e.nextElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementStyle(e,t){return getWindow().getComputedStyle(e,null).getPropertyValue(t)}function elementIndex(e){let t,n=e;if(n){for(t=0;null!==(n=n.previousSibling);)1===n.nodeType&&(t+=1);return t}}function elementParents(e,t){const n=[];let r=e.parentElement;for(;r;)t?r.matches(t)&&n.push(r):n.push(r),r=r.parentElement;return n}function elementTransitionEnd(e,t){t&&e.addEventListener("transitionend",(function n(r){r.target===e&&(t.call(e,r),e.removeEventListener("transitionend",n))}))}function elementOuterSize(e,t,n){const r=getWindow();return n?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function makeElementsArray(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}function getRotateFix(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}export{elementParents as a,elementOffset as b,createElement as c,now as d,elementChildren as e,elementOuterSize as f,getSlideTransformEl as g,elementIndex as h,classesToTokens as i,getTranslate as j,elementTransitionEnd as k,isObject as l,makeElementsArray as m,nextTick as n,getRotateFix as o,elementStyle as p,elementNextAll as q,elementPrevAll as r,setCSSProperty as s,animateCSSModeScroll as t,showWarning as u,elementIsChildOf as v,extend as w,deleteProps as x}; +//# sourceMappingURL=utils.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/utils.min.mjs.map b/docs/vendor/swiper-bundle/shared/utils.min.mjs.map new file mode 100644 index 0000000..ee0f99a --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/utils.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.mjs.mjs","names":["getWindow","getDocument","classesToTokens","classes","trim","split","filter","c","deleteProps","obj","object","Object","keys","forEach","key","e","nextTick","callback","delay","setTimeout","now","Date","getComputedStyle","el","window","style","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","transform","webkitTransform","length","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","parseFloat","m42","isObject","o","constructor","prototype","call","slice","isNode","node","HTMLElement","nodeType","extend","to","arguments","undefined","noExtend","i","nextSource","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","current","target","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","requestAnimationFrame","getSlideTransformEl","slideEl","querySelector","shadowRoot","elementChildren","element","selector","children","HTMLSlotElement","push","assignedElements","matches","elementIsChildOf","parent","isChild","contains","includes","showWarning","text","console","warn","err","createElement","tag","document","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","body","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementPrevAll","prevEls","previousElementSibling","prev","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parentElement","elementTransitionEnd","addEventListener","fireCallBack","removeEventListener","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/shared/utils.mjs b/docs/vendor/swiper-bundle/shared/utils.mjs new file mode 100644 index 0000000..32d8772 --- /dev/null +++ b/docs/vendor/swiper-bundle/shared/utils.mjs @@ -0,0 +1,315 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; + +function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); +} + +function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); +} +function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); +} +function now() { + return Date.now(); +} +function getComputedStyle(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; +} +function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; +} +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; +} +function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); +} +function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; +} +function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); +} +function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); +} +function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; +} +function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); +} +function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; +} +function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } +} +function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; +} +function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; +} +function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; +} +function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; +} +function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); +} +function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; +} +function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; +} +function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } +} +function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; +} +function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); +} +function getRotateFix(swiper) { + return v => { + if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { + return v + 0.001; + } + return v; + }; +} + +export { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x }; diff --git a/docs/vendor/swiper-bundle/swiper-bundle.css b/docs/vendor/swiper-bundle/swiper-bundle.css new file mode 100644 index 0000000..d0d00d8 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-bundle.css @@ -0,0 +1,735 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; +} +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +/* Navigation font end */ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Zoom container styles end */ +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active { + pointer-events: auto; +} +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start */ +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube slide shadows end */ +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +/* Flip slide shadows start */ +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Flip slide shadows end */ +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/docs/vendor/swiper-bundle/swiper-bundle.js b/docs/vendor/swiper-bundle/swiper-bundle.js new file mode 100644 index 0000000..3f6122d --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-bundle.js @@ -0,0 +1,9663 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); + } + function getRotateFix(swiper) { + return v => { + if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { + return v + 0.001; + } + return v; + }; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + tempDOM.innerHTML = slideEl; + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + slideEl.innerHTML = slide; + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force, beforeInit) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides, + loop: isLoop, + initialSlide + } = swiper.params; + if (beforeInit && !isLoop && initialSlide > 0) { + return; + } + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(false, true); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } else if (res && res.length === 1) { + res = res[0]; + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); + if (swiper.isElement && !targetIsButton) { + const path = e.path || e.composedPath && e.composedPath(); + if (path) { + targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); + } + } + if (swiper.params.navigation.hideOnClick && !targetIsButton) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + let allowTouchMoveTimeout; + function allowTouchMove() { + swiper.touchEventsData.preventTouchMoveFromPointerMove = false; + } + function preventTouchMove() { + clearTimeout(allowTouchMoveTimeout); + swiper.touchEventsData.preventTouchMoveFromPointerMove = true; + allowTouchMoveTimeout = setTimeout(() => { + allowTouchMove(); + }); + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { + return; + } + const zoom = swiper.zoom; + if (!gesture.imageEl) { + return; + } + if (!image.isTouched || !gesture.slideEl) { + return; + } + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + allowTouchMove(); + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + allowTouchMove(); + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + preventTouchMove(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; + controlElements.forEach(controlElement => { + if (!swiper.controller.control) swiper.controller.control = []; + if (controlElement && controlElement.swiper) { + swiper.controller.control.push(controlElement.swiper); + } else if (controlElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onControllerSwiper = e => { + swiper.controller.control.push(e.detail[0]); + swiper.update(); + controlElement.removeEventListener(eventName, onControllerSwiper); + }; + controlElement.addEventListener(eventName, onControllerSwiper); + } + }); + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null, + scrollOnFocus: true + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + let preventFocusHandler; + let focusTargetSlideEl; + let visibilityChangedTimestamp = new Date().getTime(); + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { + const prevEls = makeElementsArray(swiper.navigation.prevEl); + const nextEls = makeElementsArray(swiper.navigation.nextEl); + if (nextEls.includes(targetEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (prevEls.includes(targetEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = e => { + if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { + preventFocusHandler = true; + } + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + preventFocusHandler = false; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const onVisibilityChange = e => { + visibilityChangedTimestamp = new Date().getTime(); + }; + const handleFocus = e => { + if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; + if (new Date().getTime() - visibilityChangedTimestamp < 100) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + focusTargetSlideEl = slideEl; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + requestAnimationFrame(() => { + if (preventFocusHandler) return; + if (swiper.params.loop) { + swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); + } else { + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + } + preventFocusHandler = false; + }); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + // Tab focus + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + } + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener(eventName, onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener(eventName, onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const r = getRotateFix(swiper); + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + const rotateFix = getRotateFix(swiper); + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + const r = getRotateFix(swiper); + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + const rotateFix = getRotateFix(swiper); + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + return Swiper; + +})(); diff --git a/docs/vendor/swiper-bundle/swiper-bundle.min.css b/docs/vendor/swiper-bundle/swiper-bundle.min.css new file mode 100644 index 0000000..7af1429 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-bundle.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-bundle.min.js b/docs/vendor/swiper-bundle/swiper-bundle.min.js new file mode 100644 index 0000000..95aff9b --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function c(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function p(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let a=1;at.indexOf(e)<0));for(let t=0,a=s.length;tn?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=a(),i=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,c=e===t?t.scrollX:e.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function E(e,t){const s=[];let a=e.parentElement;for(;a;)t?a.matches(t)&&s.push(a):s.push(a),a=a.parentElement;return s}function x(e,t){t&&e.addEventListener("transitionend",(function s(a){a.target===e&&(t.call(e,a),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const a=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function T(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}function M(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}let C,P,L;function I(){return C||(C=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),C}function A(e){return void 0===e&&(e={}),P||(P=function(e){let{userAgent:t}=void 0===e?{}:e;const s=I(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!h&&(l.os="android",l.android=!0),(p||m||u)&&(l.os="ios",l.ios=!0),l}(e)),P}function z(){return L||(L=function(){const e=r(),t=A();let s=!1;function a(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(a()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,a]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&a<2}}const i=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=a();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||i&&t.ios,isWebView:i}}()),L}var $={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};const k=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const O=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const D=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},G=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},H=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const a="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=i,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+a+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&G(e,s)}))}const r=i+a-1;if(e.params.rewind||e.params.loop)for(let a=i-t;a<=r+t;a+=1){const t=(a%s+s)%s;(tr)&&G(e,t)}else for(let a=Math.max(i-t,0);a<=Math.min(r+t,s-1);a+=1)a!==i&&(a>r||a=0?x=parseFloat(x.replace("%",""))/100*r:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(a,"--swiper-centered-offset-before",""),u(a,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const I="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let a=0;a1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const a=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),i=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-r;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{m[t]=e-s})),h.forEach(((e,t)=>{h[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(a,"--swiper-centered-offset-before",-m[0]+"px"),u(a,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==E&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,a=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?a||e.el.classList.add(t):a&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let a=0;a=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&m<=t.size||u<=0&&m>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),k(o,f,s.slideVisibleClass),k(o,h,s.slideFullyVisibleClass),o.progress=i?-c:c,o.originalProgress=i?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===a)i=0,r=!0,n=!0;else{i=(e-t.minTranslate())/a;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||i<=0,n=l||i>=1,s&&(i=0),l&&(i=1)}if(s.loop){const s=t.getSlideIndexByData(0),a=t.getSlideIndexByData(t.slides.length-1),i=t.slidesGrid[s],r=t.slidesGrid[a],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=i?(o-i)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:i,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:a,activeIndex:i}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(a,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(r)if(s.loop){let t=i-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${i}"]`);else n?(o=t.filter((e=>e.column===i))[0],c=t.filter((e=>e.column===i+1))[0],d=t.filter((e=>e.column===i-1))[0]):o=t[i];o&&(n||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const a=e.nextElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const a=e.previousElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{O(e,e===o,s.slideActiveClass),O(e,e===c,s.slideNextClass),O(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:a,params:i,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,a=e.rtlTranslate?e.translate:-e.translate;let i;for(let e=0;e=t[e]&&a=t[e]&&a=t[e]&&(i=e);return s.normalizeSlideIndex&&(i<0||void 0===i)&&(i=0),i}(t)),a.indexOf(s)>=0)o=a.indexOf(s);else{const e=Math.min(i.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/i.slidesPerGroup)}if(o>=a.length&&(o=a.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&i.grid&&i.grid.rows>1;let u;if(t.virtual&&i.virtual.enabled&&i.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/i.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&H(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,a=s.params;let i=e.closest(`.${a.slideClass}, swiper-slide`);!i&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!i&&e.matches&&e.matches(`.${a.slideClass}, swiper-slide`)&&(i=e)}));let r,n=!1;if(i)for(let e=0;eo?o:a&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const i=this;if(i.destroyed)return;void 0===t&&(t=i.params.speed);const r=i.grid&&i.params.grid&&i.params.grid.rows>1;let n=e;if(i.params.loop)if(i.virtual&&i.params.virtual.enabled)n+=i.virtual.slidesBefore;else{let e;if(r){const t=n*i.params.grid.rows;e=i.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=i.getSlideIndexByData(n);const t=r?Math.ceil(i.slides.length/i.params.grid.rows):i.slides.length,{centeredSlides:s}=i.params;let l=i.params.slidesPerView;"auto"===l?l=i.slidesPerViewDynamic():(l=Math.ceil(parseFloat(i.params.slidesPerView,10)),s&&l%2==0&&(l+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=i.getSlideIndexByData(n)}return requestAnimationFrame((()=>{i.slideTo(n,t,s,a)})),i},slideNext:function(e,t,s){void 0===t&&(t=!0);const a=this,{enabled:i,params:r,animating:n}=a;if(!i||a.destroyed)return a;void 0===e&&(e=a.params.speed);let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex{a.slideTo(a.activeIndex+o,e,t,s)})),!0}return r.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const a=this,{params:i,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=a;if(!o||a.destroyed)return a;void 0===e&&(e=a.params.speed);const c=a.virtual&&i.virtual.enabled;if(i.loop){if(d&&!c&&i.loopPreventsSliding)return!1;a.loopFix({direction:"prev"}),a._clientLeft=a.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?a.translate:-a.translate),m=r.map((e=>p(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&i.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(f=f-a.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return i.loop&&0===a.activeIndex&&i.cssMode?(requestAnimationFrame((()=>{a.slideTo(f,e,t,s)})),!0):a.slideTo(f,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const a=this;if(!a.destroyed)return void 0===e&&(e=a.params.speed),a.slideTo(a.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;if(i.destroyed)return;void 0===e&&(e=i.params.speed);let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;i=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var R={loopCreate:function(e){const t=this,{params:s,slidesEl:a}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const i=()=>{f(a,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let a=0;a1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):x=r;const S="next"===a||!a,T="prev"===a||!a;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===i?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&E.push(s)})):E.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&E.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||E.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x+Math.ceil(M),0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(i){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(E.length>0&&S)if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x-C,0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?E.length/m.grid.rows:E.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:a,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const a=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;a[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),a.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function F(e,t,s){const a=r(),{params:i}=e,n=i.edgeSwipeDetection,l=i.edgeSwipeThreshold;return!n||!(s<=l||s>=a.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function q(e){const t=this,s=a();let i=e;i.originalEvent&&(i=i.originalEvent);const n=t.touchEventsData;if("pointerdown"===i.type){if(null!==n.pointerId&&n.pointerId!==i.pointerId)return;n.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(n.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void F(t,i,i.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=i.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...element.assignedElements()].includes(e);return s}(p,t.wrapperEl))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=i.composedPath?i.composedPath():i.path;u&&i.target&&i.target.shadowRoot&&m&&(p=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!i.target||!i.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=i.pageX,d.currentY=i.pageY;const g=d.currentX,v=d.currentY;if(!F(t,i,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;p.matches(n.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||i.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function V(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==i.touchId)return;if(p.pointerId!==i.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===i.touchId))[0],!c||c.identifier!==i.touchId)return}else c=p;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,m=c.pageY;if(p.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return p.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),i.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",p),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",p),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling||"touchmove"===p.type&&i.preventTouchMoveFromPointerMove)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&p.cancelable&&p.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&p.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",p),i.isMoved=!0,i.currentTranslate=g+i.startTranslate;let E=!0,x=r.resistanceRatio;if(r.touchReleaseOnEdges&&(x=0),g>0?(b&&y&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(E=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+g)**x))):g<0&&(b&&y&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function _(e){const t=this,s=t.touchEventsData;let a,i=e;i.originalEvent&&(i=i.originalEvent);if("touchend"===i.type||"touchcancel"===i.type){if(a=[...i.changedTouches].filter((e=>e.identifier===s.touchId))[0],!a||a.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(i.pointerId!==s.pointerId)return;a=i}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(i.type)){if(!(["pointercancel","contextmenu"].includes(i.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!r.simulateTouch&&"mouse"===i.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",i),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=i.path||i.composedPath&&i.composedPath();t.updateClickedSlide(e&&e[0]||i.target,e),t.emit("tap click",i),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",i)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&h=c[e])&&(g=e,v=c[c.length-1]-c[c.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-c[g])/v,E=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+E):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+E):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(i.target===t.navigation.nextEl||i.target===t.navigation.prevEl)?i.target===t.navigation.nextEl?t.slideTo(g+E):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+E),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function W(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function j(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function U(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function K(e){const t=this;D(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function Z(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const Q=(e,t)=>{const s=a(),{params:i,el:r,wrapperEl:n,device:l}=e,o=!!i.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;r&&"string"!=typeof r&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[d]("click",e.onClick,!0),i.cssMode&&n[d]("scroll",e.onScroll),i.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",W,!0):e[c]("observerUpdate",W,!0),r[d]("load",e.onLoad,{capture:!0}))};const J=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var ee={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function te(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(!0===e[a]&&(e[a]={enabled:!0}),"navigation"===a&&e[a]&&e[a].enabled&&!e[a].prevEl&&!e[a].nextEl&&(e[a].auto=!0),["pagination","scrollbar"].indexOf(a)>=0&&e[a]&&e[a].enabled&&!e[a].el&&(e[a].auto=!0),a in e&&"enabled"in i?("object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),p(t,s)):p(t,s)):p(t,s)}}const se={eventsEmitter:$,update:N,translate:X,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),B({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),B({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:Y,loop:R,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=q.bind(e),e.onTouchMove=V.bind(e),e.onTouchEnd=_.bind(e),e.onDocumentTouchStart=Z.bind(e),t.cssMode&&(e.onScroll=U.bind(e)),e.onClick=j.bind(e),e.onLoad=K.bind(e),Q(e,"on")},detachEvents:function(){Q(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:a,el:i}=e,r=a.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=J(e,a),d=J(e,l),c=e.params.grabCursor,u=l.grabCursor,m=a.enabled;o&&!d?(i.classList.remove(`${a.containerModifierClass}grid`,`${a.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(i.classList.add(`${a.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===a.grid.fill)&&i.classList.add(`${a.containerModifierClass}grid-column`),e.emitContainerClasses()),c&&!u?e.unsetGrabCursor():!c&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=a[t]&&a[t].enabled,i=l[t]&&l[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()}));const h=l.direction&&l.direction!==a.direction,f=a.loop&&(l.slidesPerView!==a.slidesPerView||h),g=a.loop;h&&s&&e.changeDirection(),p(e.params,l);const v=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),m&&!v?e.disable():!m&&v&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(f?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!g&&w?(e.loopCreate(t),e.updateSlides()):g&&!w&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,el:i,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),i.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},ae={};class ie{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const a=p({},t,{el:s});e.push(new ie(a))})),e}const l=this;l.__swiper__=!0,l.support=I(),l.device=A({userAgent:t.userAgent}),l.browser=z(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:te(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=p({},ee,o);return l.params=p({},d,ae,t),l.originalParams=p({},l.params),l.passedParams=p({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,a=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-a}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=a[l]?Math.ceil(a[l].swiperSlideSize):0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){i[l]-i[e]{t.complete&&D(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)a(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(t.length-1,0,!1,!0)}else i=e.slideTo(e.activeIndex,0,!1,!0);i||a()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${a}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(a())}return f(s,a())[0]})();return!i&&t.params.createElements&&(i=v("div",t.params.wrapperClass),s.append(i),f(s,`.${t.params.slideClass}`).forEach((e=>{i.append(e)}))),Object.assign(t,{el:s,wrapperEl:i,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:i,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(i,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?D(t,e):e.addEventListener("load",(e=>{D(t,e.target)}))})),H(t),t.initialized=!0,H(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,el:i,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i&&"string"!=typeof i&&i.removeAttribute("style"),r&&r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(a.slideVisibleClass,a.slideFullyVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){p(ae,e)}static get extendedDefaults(){return ae}static get defaults(){return ee}static installModule(e){ie.prototype.__modules__||(ie.prototype.__modules__=[]);const t=ie.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>ie.installModule(e))),ie):(ie.installModule(e),ie)}}function re(e,t,s,a){return e.params.createElements&&Object.keys(a).forEach((i=>{if(!s[i]&&!0===s.auto){let r=f(e.el,`.${a[i]}`)[0];r||(r=v("div",a[i]),r.className=a[i],e.el.append(r)),s[i]=r,t[i]=r}})),s}function ne(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function le(e){const t=this,{params:s,slidesEl:a}=t;s.loop&&t.loopDestroy();const i=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.append(t.children[0]),t.innerHTML=""}else a.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.prepend(t.children[0]),t.innerHTML=""}else i.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function me(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function he(e){let{swiper:t,duration:s,transformElements:a,allSlides:i}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a:a.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{x(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function fe(e,t,s){const a=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,i=h(t);let r=i.querySelector(`.${a.split(" ").join(".")}`);return r||(r=v("div",a.split(" ")),i.append(r)),r}Object.keys(se).forEach((e=>{Object.keys(se[e]).forEach((t=>{ie.prototype[t]=se[e][t]}))})),ie.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const a=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void i("observerUpdate",e[0]);const s=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));a.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),n.push(a)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=E(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ge=[function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=a();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];let i;return a.renderSlide?(i=a.renderSlide.call(s,e,t),"string"==typeof i&&(o.innerHTML=i,i=o.children[0])):i=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),i.setAttribute("data-swiper-slide-index",t),a.renderSlide||(i.innerHTML=e),a.cache&&(s.virtual.cache[t]=i),i}function c(e,t){const{slidesPerView:a,slidesPerGroup:i,centeredSlides:r,loop:l,initialSlide:o}=s.params;if(t&&!l&&o>0)return;const{addSlidesBefore:c,addSlidesAfter:p}=s.params.virtual,{from:u,to:m,slides:h,slidesGrid:g,offset:v}=s.virtual;s.params.cssMode||s.updateActiveIndex();const w=s.activeIndex||0;let b,y,E;b=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",r?(y=Math.floor(a/2)+i+p,E=Math.floor(a/2)+i+c):(y=a+(i-1)+p,E=(l?a:i)+c);let x=w-E,S=w+y;l||(x=Math.max(x,0),S=Math.min(S,h.length-1));let T=(s.slidesGrid[x]||0)-(s.slidesGrid[0]||0);function M(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(l&&w>=E?(x-=E,r||(T+=s.slidesGrid[0])):l&&w{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:T,from:x,to:S,slides:function(){const e=[];for(let t=x;t<=S;t+=1)e.push(h[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?M():n("virtualUpdate"));const C=[],P=[],L=e=>{let t=e;return e<0?t=h.length+e:t>=h.length&&(t-=h.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=u;e<=m;e+=1)if(eS){const t=L(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const I=l?-h.length:0,A=l?2*h.length:h.length;for(let t=I;t=x&&t<=S){const s=L(t);void 0===m||e?P.push(s):(t>m&&P.push(s),t{s.slidesEl.append(d(h[e],e))})),l)for(let e=C.length-1;e>=0;e-=1){const t=C[e];s.slidesEl.prepend(d(h[t],t))}else C.sort(((e,t)=>t-e)),C.forEach((e=>{s.slidesEl.prepend(d(h[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),M()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,c(!1,!0)})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const a=e[s],r=a.getAttribute("data-swiper-slide-index");r&&a.setAttribute("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}c(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[a]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[a],1),e[a]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===E(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,i=a.clientWidth,r=a.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(a);s&&(d.left-=a.scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||m||h)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",i)}}function c(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function p(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&c()})),i("destroy",(()=>{t.keyboard.enabled&&p()})),Object.assign(t.keyboard,{enable:c,disable:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let c,p=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-p<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),p=(new n.Date).getTime(),!1)))}function g(e){let s=e,a=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const p=n&&n.contains(s.target);if(!t.mouseEntered&&!p&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},a=c&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!p&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,a=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;c=e,u.splice(0),d=l((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{c=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const a=u.length?u[u.length-1]:void 0;if(u.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),a("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;function r(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s&&s.length>1&&1===t.el.querySelectorAll(e).length?s=t.el.querySelector(e):s&&1===s.length&&(s=s[0])),e&&!s?e:s)}function n(e,s){const a=t.params.navigation;(e=T(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...a.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](a.lockClass))}))}function l(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return n(s,!1),void n(e,!1);n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function d(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function c(){const e=t.params.navigation;if(t.params.navigation=re(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=r(e.nextEl),a=r(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:a}),s=T(s),a=T(a);const i=(s,a)=>{s&&s.addEventListener("click","next"===a?d:o),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>i(e,"next"))),a.forEach((e=>i(e,"prev")))}function p(){let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s);const a=(e,s)=>{e.removeEventListener("click","next"===s?d:o),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>a(e,"next"))),s.forEach((e=>a(e,"prev")))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null},a("init",(()=>{!1===t.params.navigation.enabled?u():(c(),l())})),a("toEdge fromEdge lock unlock",(()=>{l()})),a("destroy",(()=>{p()})),a("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s),t.enabled?l():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),a("click",((e,s)=>{let{nextEl:a,prevEl:r}=t.navigation;a=T(a),r=T(r);const n=s.target;let l=r.includes(n)||a.includes(n);if(t.isElement&&!l){const e=s.path||s.composedPath&&s.composedPath();e&&(l=e.find((e=>a.includes(e)||r.includes(e))))}if(t.params.navigation.hideOnClick&&!l){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;a.length?e=a[0].classList.contains(t.params.navigation.hiddenClass):r.length&&(e=r[0].classList.contains(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),[...a,...r].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const u=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),p()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),c(),l()},disable:u,update:l,init:c,destroy:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function d(e,s){const{bulletActiveClass:a}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${a}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${a}-${s}-${s}`))}function c(e){const s=e.target.closest(ne(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const a=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===a)return;t.slideToLoop(a)}else t.slideTo(a)}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;let a,r,c=t.pagination.el;c=T(c);const p=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,u=t.params.loop?Math.ceil(p/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,a=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(a=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,a=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const i=t.pagination.bullets;let o,p,u;if(s.dynamicBullets&&(n=S(i[0],t.isHorizontal()?"width":"height",!0),c.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=a-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(a-l,0),p=o+(Math.min(i.length,s.dynamicMainBullets)-1),u=(p+o)/2),i.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),c.length>1)i.forEach((e=>{const i=y(e);i===a?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(i>=o&&i<=p&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),i===o&&d(e,"prev"),i===p&&d(e,"next"))}));else{const e=i[a];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&i.forEach(((e,t)=>{e.setAttribute("part",t===a?"bullet-active":"bullet")})),s.dynamicBullets){const e=i[o],t=i[p];for(let e=o;e<=p;e+=1)i[e]&&i[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));d(e,"prev"),d(t,"next")}}if(s.dynamicBullets){const a=Math.min(i.length,s.dynamicMainBullets+4),r=(n*a-n)/2-u*n,l=e?"right":"left";i.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}c.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(ne(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(a+1)})),e.querySelectorAll(ne(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(u)}))),"progressbar"===s.type){let i;i=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(a+1)/u;let n=1,l=1;"horizontal"===i?n=r:l=r,e.querySelectorAll(ne(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,a+1,u),0===r&&i("paginationRender",e)):(0===r&&i("paginationRender",e),i("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let a=t.pagination.el;a=T(a);let r="";if("bullets"===e.type){let a=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&a>s&&(a=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],a.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(ne(e.bulletClass)))})),"custom"!==e.type&&i("paginationRender",a[0])}function m(){t.params.pagination=re(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>E(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=T(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),t.enabled||s.classList.add(e.lockClass)})))}function h(){const e=t.params.pagination;if(o())return;let s=t.pagination.el;s&&(s=T(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}a("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.pagination.enabled?f():(m(),u(),p())})),a("activeIndexChange",(()=>{void 0===t.snapIndex&&p()})),a("snapIndexChange",(()=>{p()})),a("snapGridLengthChange",(()=>{u(),p()})),a("destroy",(()=>{h()})),a("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),a("lock unlock",(()=>{p()})),a("click",((e,s)=>{const a=s.target,r=T(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!a.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const f=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),h()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),m(),u(),p()},disable:f,render:u,update:p,init:m,destroy:h})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const o=a();let d,c,p,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:a,el:i}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=c,o=(p-c)*n;s?(o=-o,o>0?(l=c-o,o=0):-o+c>p&&(l=p+o)):o<0?(l=c+o,o=0):o+c>p&&(l=p-o),t.isHorizontal()?(a.style.transform=`translate3d(${o}px, 0, 0)`,a.style.width=`${l}px`):(a.style.transform=`translate3d(0px, ${o}px, 0)`,a.style.height=`${l}px`),r.hide&&(clearTimeout(h),i.style.opacity=1,h=setTimeout((()=>{i.style.opacity=0,i.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:a}=e;s.style.width="",s.style.height="",p=t.isHorizontal()?a.offsetWidth:a.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),c="auto"===t.params.scrollbar.dragSize?p*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${c}px`:s.style.height=`${c}px`,a.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function E(e){const{scrollbar:s,rtlTranslate:a}=t,{el:i}=s;let r;r=(y(e)-w(i)[t.isHorizontal()?"left":"top"]-(null!==d?d:c/2))/(p-c),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n,dragEl:l}=a;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.style.transitionDuration="100ms",l.style.transitionDuration="100ms",E(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:a}=t,{el:i,dragEl:n}=s;m&&(e.preventDefault&&e.cancelable?e.preventDefault():e.returnValue=!1,E(e),a.style.transitionDuration="0ms",i.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function M(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n}=a;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",i.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,params:a}=t,i=s.el;if(!i)return;const r=i,n=!!a.passiveListeners&&{passive:!1,capture:!1},l=!!a.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",x,n),o[d]("pointermove",S,n),o[d]("pointerup",M,l)}function P(){const{scrollbar:e,el:s}=t;t.params.scrollbar=re(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i,r;if("string"==typeof a.el&&t.isElement&&(i=t.el.querySelector(a.el)),i||"string"!=typeof a.el)i||(i=a.el);else if(i=o.querySelectorAll(a.el),!i.length)return;t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.querySelectorAll(a.el).length&&(i=s.querySelector(a.el)),i.length>0&&(i=i[0]),i.classList.add(t.isHorizontal()?a.horizontalClass:a.verticalClass),i&&(r=i.querySelector(ne(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),i.append(r))),Object.assign(e,{el:i,dragEl:r}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),i&&i.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function L(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},i("changeDirection",(()=>{if(!t.scrollbar||!t.scrollbar.el)return;const e=t.params.scrollbar;let{el:s}=t.scrollbar;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),i("init",(()=>{!1===t.params.scrollbar.enabled?I():(P(),b(),g())})),i("update resize observerUpdate lock unlock changeDirection",(()=>{b()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),i("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),i("destroy",(()=>{L()}));const I=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),L()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),P(),b(),g()},disable:I,updateSize:b,setTranslate:g,init:P,destroy:L})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:a}=t,i=a?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),c=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*i+"%":n*s*i+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let p=`translate3d(${n}, ${l}, 0px)`;if(null!=o){p+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(c&&null!=c){p+=` rotate(${c*s*-1}deg)`}e.style.transform=p},n=()=>{const{el:e,slides:s,progress:a,snapGrid:n,isElement:l}=t,o=f(e,i);t.isElement&&o.push(...f(t.hostEl,i)),o.forEach((e=>{r(e,a)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-a*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${i}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&n()})),a("setTranslate",(()=>{t.params.parallax.enabled&&n()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:a}=t,r=[...s.querySelectorAll(i)];t.isElement&&r.push(...a.querySelectorAll(i)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c=1,p=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v,b=1;function y(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,a=u[1].pageY;return Math.sqrt((s-e)**2+(a-t)**2)}function x(){const e=t.params.zoom,s=m.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&m.imageEl&&m.imageEl.naturalWidth){const e=m.imageEl.naturalWidth/m.imageEl.offsetWidth;return Math.min(e,s)}return s}function S(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function T(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!S(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=y(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let a=m.slideEl.querySelector(`.${s.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=a,m.imageWrapEl=a?E(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=x()}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/c,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/c]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}p=!0}}function M(e){if(!S(e))return;const s=t.params.zoom,a=t.zoom,i=u.findIndex((t=>t.pointerId===e.pointerId));i>=0&&(u[i]=e),u.length<2||(o=!0,m.scaleMove=y(),m.imageEl&&(a.scale=m.scaleMove/m.scaleStart*c,a.scale>m.maxRatio&&(a.scale=m.maxRatio-1+(a.scale-m.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));i>=0&&u.splice(i,1),l&&o&&(l=!1,o=!1,m.imageEl&&(a.scale=Math.max(Math.min(a.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,c=a.scale,p=!1,a.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):a.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===a.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function P(){t.touchEventsData.preventTouchMoveFromPointerMove=!1}function L(e){if(!S(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth||m.imageEl.clientWidth,h.height=m.imageEl.offsetHeight||m.imageEl.clientHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const a=h.width*s.scale,i=h.height*s.scale;h.minX=Math.min(m.slideWidth/2-a/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-i/2,0),h.maxY=-h.minY,h.touchesCurrent.x=u.length>0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!p){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return h.isTouched=!1,void P();if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return h.isTouched=!1,void P()}e.cancelable&&e.preventDefault(),e.stopPropagation(),clearTimeout(v),t.touchEventsData.preventTouchMoveFromPointerMove=!0,v=setTimeout((()=>{P()})),h.isMoved=!0;const r=(s.scale-c)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function I(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,c=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function A(e){const s=t.zoom,a=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${a.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?E(m.imageEl,`.${a.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let i,r,l,o,d,p,u,g,v,b,y,S,T,M,C,P,L,I;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(i=e.pageX,r=e.pageY):(i=h.touchesStart.x,r=h.touchesStart.y);const A="number"==typeof e?e:null;1===c&&A&&(i=void 0,r=void 0);const z=x();s.scale=A||z,c=A||z,!e||1===c&&A?(u=0,g=0):(L=m.slideEl.offsetWidth,I=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+L/2-i,p=o+I/2-r,v=m.imageEl.offsetWidth||m.imageEl.clientWidth,b=m.imageEl.offsetHeight||m.imageEl.clientHeight,y=v*s.scale,S=b*s.scale,T=Math.min(L/2-y/2,0),M=Math.min(I/2-S/2,0),C=-T,P=-M,u=d*s.scale,g=p*s.scale,uC&&(u=C),gP&&(g=P)),A&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function z(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?E(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,c=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function $(e){const s=t.zoom;s.scale&&1!==s.scale?z():A(e)}function k(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:a}=k();t.wrapperEl.addEventListener("pointerdown",T,s),t.wrapperEl.addEventListener("pointermove",M,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,C,s)})),t.wrapperEl.addEventListener("pointermove",L,a)}function D(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:a}=k();t.wrapperEl.removeEventListener("pointerdown",T,s),t.wrapperEl.removeEventListener("pointermove",M,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,C,s)})),t.wrapperEl.removeEventListener("pointermove",L,a)}Object.defineProperty(t.zoom,"scale",{get:()=>b,set(e){if(b!==e){const t=m.imageEl,s=m.slideEl;i("zoomChange",e,t,s)}b=e}}),a("init",(()=>{t.params.zoom.enabled&&O()})),a("destroy",(()=>{D()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const a=u.length>0?u[0]:e;h.touchesStart.x=a.pageX,h.touchesStart.y=a.pageY}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,a=300;const i=g.x*s,r=h.currentX+i,n=g.y*a,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,a);h.currentX=r,h.currentY=l;const d=h.width*e.scale,c=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-c/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&$(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&I()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&I()})),Object.assign(t.zoom,{enable:O,disable:D,in:A,out:z,toggle:$})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){("string"==typeof t.params.controller.control?[...document.querySelectorAll(t.params.controller.control)]:[t.params.controller.control]).forEach((e=>{if(t.controller.control||(t.controller.control=[]),e&&e.swiper)t.controller.control.push(e.swiper);else if(e){const s=`${t.params.eventsPrefix}init`,a=i=>{t.controller.control.push(i.detail[0]),t.update(),e.removeEventListener(s,a)};e.addEventListener(s,a)}}))}else t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e{s.updateAutoHeight()})),x(s.wrapperEl,(()=>{i&&s.transitionEnd()}))))}if(Array.isArray(i))for(r=0;r{e.setAttribute("tabIndex","0")}))}function p(e){(e=T(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function u(e,t){(e=T(e)).forEach((e=>{e.setAttribute("role",t)}))}function m(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function h(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function f(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function g(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function w(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=e.target;if(!t.pagination||!t.pagination.el||a!==t.pagination.el&&!t.pagination.el.contains(e.target)||e.target.matches(ne(t.params.pagination.bulletClass))){if(t.navigation&&t.navigation.prevEl&&t.navigation.nextEl){const e=T(t.navigation.prevEl);T(t.navigation.nextEl).includes(a)&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?d(s.lastSlideMessage):d(s.nextSlideMessage)),e.includes(a)&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?d(s.firstSlideMessage):d(s.prevSlideMessage))}t.pagination&&a.matches(ne(t.params.pagination.bulletClass))&&a.click()}}function b(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function E(){return b()&&t.params.pagination.clickable}const x=(e,t,s)=>{c(e),"BUTTON"!==e.tagName&&(u(e,"button"),e.addEventListener("keydown",w)),h(e,s),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},S=e=>{n&&n!==e.target&&!n.contains(e.target)&&(r=!0),t.a11y.clicked=!0},M=()=>{r=!1,requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},C=e=>{o=(new Date).getTime()},P=e=>{if(t.a11y.clicked||!t.params.a11y.scrollOnFocus)return;if((new Date).getTime()-o<100)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;n=s;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,requestAnimationFrame((()=>{r||(t.params.loop?t.slideToLoop(parseInt(s.getAttribute("data-swiper-slide-index")),0):t.slideTo(t.slides.indexOf(s),0),r=!1)})))},L=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&m(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&u(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((a,i)=>{const r=t.params.loop?parseInt(a.getAttribute("data-swiper-slide-index"),10):i;h(a,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},I=()=>{const e=t.params.a11y;t.el.append(l);const s=t.el;e.containerRoleDescriptionMessage&&m(s,e.containerRoleDescriptionMessage),e.containerMessage&&h(s,e.containerMessage);const i=t.wrapperEl,r=e.id||i.getAttribute("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,T(i).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(i,o),L();let{nextEl:c,prevEl:p}=t.navigation?t.navigation:{};if(c=T(c),p=T(p),c&&c.forEach((t=>x(t,r,e.nextSlideMessage))),p&&p.forEach((t=>x(t,r,e.prevSlideMessage))),E()){T(t.pagination.el).forEach((e=>{e.addEventListener("keydown",w)}))}a().addEventListener("visibilitychange",C),t.el.addEventListener("focus",P,!0),t.el.addEventListener("focus",P,!0),t.el.addEventListener("pointerdown",S,!0),t.el.addEventListener("pointerup",M,!0)};i("beforeInit",(()=>{l=v("span",t.params.a11y.notificationClass),l.setAttribute("aria-live","assertive"),l.setAttribute("aria-atomic","true")})),i("afterInit",(()=>{t.params.a11y.enabled&&I()})),i("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&L()})),i("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(f(s),p(s)):(g(s),c(s))),e&&(t.isEnd?(f(e),p(e)):(g(e),c(e)))}()})),i("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;b()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(c(s),t.params.pagination.renderBullet||(u(s,"button"),h(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(ne(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),i("destroy",(()=>{t.params.a11y.enabled&&function(){l&&l.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=T(e),s=T(s),e&&e.forEach((e=>e.removeEventListener("keydown",w))),s&&s.forEach((e=>e.removeEventListener("keydown",w))),E()&&T(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",w)}));a().removeEventListener("visibilitychange",C),t.el&&"string"!=typeof t.el&&(t.el.removeEventListener("focus",P,!0),t.el.removeEventListener("pointerdown",S,!0),t.el.removeEventListener("pointerup",M,!0))}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${s}"]`):t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),n.key||n.value?(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p)):t.params.history.replaceState||e.addEventListener("popstate",p)}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const c=()=>{i("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},p=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),i("hashSet")):(o.location.hash=s||"",i("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,a=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(a||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",c)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",c)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&p()})),n("slideChange",(()=>{l&&t.params.cssMode&&p()}))},function(e){let t,s,{swiper:i,extendParams:r,on:n,emit:l,params:o}=e;i.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,c,p,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){i&&!i.destroyed&&i.wrapperEl&&e.target===i.wrapperEl&&(i.wrapperEl.removeEventListener("transitionend",y),g||e.detail&&e.detail.bySwiperTouchMove||C())}const E=()=>{if(i.destroyed||!i.autoplay.running)return;i.autoplay.paused?c=!0:c&&(w=d,c=!1);const e=i.autoplay.paused?d:b+w-(new Date).getTime();i.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{E()}))},x=e=>{if(i.destroyed||!i.autoplay.running)return;cancelAnimationFrame(s),E();let a=void 0===e?i.params.autoplay.delay:e;v=i.params.autoplay.delay,w=i.params.autoplay.delay;const r=(()=>{let e;if(e=i.virtual&&i.params.virtual.enabled?i.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:i.slides[i.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(a=r,v=r,w=r),d=a;const n=i.params.speed,o=()=>{i&&!i.destroyed&&(i.params.autoplay.reverseDirection?!i.isBeginning||i.params.loop||i.params.rewind?(i.slidePrev(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(i.slides.length-1,n,!0,!0),l("autoplay")):!i.isEnd||i.params.loop||i.params.rewind?(i.slideNext(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(0,n,!0,!0),l("autoplay")),i.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{x()}))))};return a>0?(clearTimeout(t),t=setTimeout((()=>{o()}),a)):requestAnimationFrame((()=>{o()})),a},S=()=>{b=(new Date).getTime(),i.autoplay.running=!0,x(),l("autoplayStart")},T=()=>{i.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(i.destroyed||!i.autoplay.running)return;clearTimeout(t),e||(f=!0);const a=()=>{l("autoplayPause"),i.params.autoplay.waitForTransition?i.wrapperEl.addEventListener("transitionend",y):C()};if(i.autoplay.paused=!0,s)return h&&(d=i.params.autoplay.delay),h=!1,void a();const r=d||i.params.autoplay.delay;d=r-((new Date).getTime()-b),i.isEnd&&d<0&&!i.params.loop||(d<0&&(d=0),a())},C=()=>{i.isEnd&&d<0&&!i.params.loop||i.destroyed||!i.autoplay.running||(b=(new Date).getTime(),f?(f=!1,x(d)):x(),i.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(i.destroyed||!i.autoplay.running)return;const e=a();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,i.animating||i.autoplay.paused||M(!0))},I=e=>{"mouse"===e.pointerType&&(g=!1,i.autoplay.paused&&C())};n("init",(()=>{i.params.autoplay.enabled&&(i.params.autoplay.pauseOnMouseEnter&&(i.el.addEventListener("pointerenter",L),i.el.addEventListener("pointerleave",I)),a().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{i.el&&"string"!=typeof i.el&&(i.el.removeEventListener("pointerenter",L),i.el.removeEventListener("pointerleave",I)),a().removeEventListener("visibilitychange",P),i.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{i.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!i.destroyed&&i.autoplay.running&&(s||!i.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!i.destroyed&&i.autoplay.running&&(i.params.autoplay.disableOnInteraction?T():(p=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!i.destroyed&&i.autoplay.running&&p){if(clearTimeout(m),clearTimeout(t),i.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&i.params.cssMode&&C(),u=!1,p=!1}})),n("slideChange",(()=>{!i.destroyed&&i.autoplay.running&&(h=!0)})),Object.assign(i.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&a.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;i=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(i):t.slideTo(i)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(c(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let i=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>i?r-Math.floor(a/2)+1:r+Math.floor(a/2)-1:r>i&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},i("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=a(),i=()=>{const a="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(a&&a.swiper)e.swiper=a.swiper,o(),d(!0);else if(a){const s=`${t.params.eventsPrefix}init`,i=r=>{e.swiper=r.detail[0],a.removeEventListener(s,i),o(),d(!0),e.swiper.update(),t.update()};a.addEventListener(s,i)}return a},r=()=>{if(t.destroyed)return;i()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),i("slideChange update resize observerUpdate",(()=>{d()})),i("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),i("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:c}=t,p=o()-c.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=c.velocities.pop(),s=c.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,c.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let p=t.translate+s;l&&(p=-p);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(pt.minTranslate())r.freeMode.momentumBounce?(p-t.minTranslate()>h&&(p=t.minTranslate()+h),u=t.minTranslate(),m=!0,c.allowMomentumBounce=!0):p=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-p){e=t;break}p=Math.abs(d[e]-p){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-p-t.translate)/t.velocity):Math.abs((p-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-p:p)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&c.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(p),t.setTransition(e),t.setTranslate(p),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(p),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||p>=r.longSwipesMs)&&(a("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,i,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{i=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;i&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,r.emitContainerClasses()):!i&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),i=s})),r.grid={initSlides:e=>{const{slidesPerView:i}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;a=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==i&&"row"===l&&(t=Math.max(t,i*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,i,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:c,fill:p}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===p&&l>1){const s=Math.floor(e/(l*c)),a=e-c*l*s,r=0===s?l:Math.min(Math.ceil((u-s*c*l)/c),l);f=Math.floor(a/r),h=a-f*r+s*l,m=h+f*t/c,i.style.order=m}else"column"===p?(h=Math.floor(e/c),f=e-h*c,(h>a||h===a&&f===c-1)&&(f+=1,f>=c&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);i.row=f,i.column=h,i.style.height=`calc((100% - ${(c-1)*d}px) / ${c})`,i.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",i.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:a,roundLengths:i}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),a){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(i)),a&&(a.style.opacity=Math.max(-t,0)),i&&(i.style.opacity=Math.max(t,0))};ue({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,c=M(t),p=t.params.cubeEffect,u=t.isHorizontal(),m=t.virtual&&t.params.virtual.enabled;let h,f=0;p.shadow&&(u?(h=t.wrapperEl.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),t.wrapperEl.append(h)),h.style.height=`${r}px`):(h=e.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),e.append(h))));for(let e=0;e-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.style.transform=w,p.slideShadows&&i(t,d,u)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,p.shadow)if(u)h.style.transform=`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${p.shadowScale})`;else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,i=p.shadowOffset;h.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-89.99deg)`}const g=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${g}px) rotateX(${c(t.isHorizontal()?0:f)}deg) rotateY(${c(t.isHorizontal()?-f:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const i=(e,s)=>{let a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=fe("flip",e,t.isHorizontal()?"left":"top")),i||(i=fe("flip",e,t.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),i&&(i.style.opacity=Math.max(s,0))};ue({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect,r=M(t);for(let n=0;n{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),i(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),ue({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth,p=M(t);for(let e=0,t=a.length;e0?u:0),s&&(s.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;ue({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides,o=M(t);if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(g=r.prev,f=!0),m.forEach(((e,t)=>{m[t]=`calc(${e}px + (${i(g.translate[t])} * ${Math.abs(c*n)}))`})),h.forEach(((e,t)=>{let s=g.rotate[t]*Math.abs(c*n);h[t]=s})),a.style.zIndex=-Math.abs(Math.round(d))+e.length;const v=m.join(", "),w=`rotateX(${o(h[0])}deg) rotateY(${o(h[1])}deg) rotateZ(${o(h[2])}deg)`,b=p<0?`scale(${1+(1-g.scale)*p*n})`:`scale(${1-(1-g.scale)*p*n})`,y=p<0?1+(1-g.opacity)*p*n:1-(1-g.opacity)*p*n,E=`translate3d(${v}) ${w} ${b}`;if(f&&g.shadow||!f){let e=a.querySelector(".swiper-slide-shadow");if(!e&&g.shadow&&(e=fe("creative",a)),e){const t=r.shadowPerProgress?c*(1/r.limitProgress):c;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const x=me(0,a);x.style.transform=E,x.style.opacity=y,g.origin&&(x.style.transformOrigin=g.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),ue({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:a}=t,i=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=a?-t.translate:t.translate;for(let o=0;o0&&p<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||E){const e=(1-Math.abs((Math.abs(p)-.5)/.5))**.5;v+=-28*p*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(p)+"%"}if(m=p<0?`calc(${m}px ${a?"-":"+"} (${w*Math.abs(p)}%))`:p>0?`calc(${m}px ${a?"-":"+"} (-${w*Math.abs(p)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const x=p<0?""+(1+(1-g)*p):""+(1-(1-g)*p),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${i.rotate?a?-v:v:0}deg)\n scale(${x})\n `;if(i.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=fe("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(p)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(c))+e.length;me(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return ie.use(ge),ie}(); +//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-bundle.min.js.map b/docs/vendor/swiper-bundle/swiper-bundle.min.js.map new file mode 100644 index 0000000..2d2fa90 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","support","deviceCached","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","find","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-bundle.min.mjs b/docs/vendor/swiper-bundle/swiper-bundle.min.mjs new file mode 100644 index 0000000..f49fcbd --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import Virtual from"./modules/virtual.min.mjs";import Keyboard from"./modules/keyboard.min.mjs";import Mousewheel from"./modules/mousewheel.min.mjs";import Navigation from"./modules/navigation.min.mjs";import Pagination from"./modules/pagination.min.mjs";import Scrollbar from"./modules/scrollbar.min.mjs";import Parallax from"./modules/parallax.min.mjs";import Zoom from"./modules/zoom.min.mjs";import Controller from"./modules/controller.min.mjs";import A11y from"./modules/a11y.min.mjs";import History from"./modules/history.min.mjs";import HashNavigation from"./modules/hash-navigation.min.mjs";import Autoplay from"./modules/autoplay.min.mjs";import Thumb from"./modules/thumbs.min.mjs";import freeMode from"./modules/free-mode.min.mjs";import Grid from"./modules/grid.min.mjs";import Manipulation from"./modules/manipulation.min.mjs";import EffectFade from"./modules/effect-fade.min.mjs";import EffectCube from"./modules/effect-cube.min.mjs";import EffectFlip from"./modules/effect-flip.min.mjs";import EffectCoverflow from"./modules/effect-coverflow.min.mjs";import EffectCreative from"./modules/effect-creative.min.mjs";import EffectCards from"./modules/effect-cards.min.mjs";const modules=[Virtual,Keyboard,Mousewheel,Navigation,Pagination,Scrollbar,Parallax,Zoom,Controller,A11y,History,HashNavigation,Autoplay,Thumb,freeMode,Grid,Manipulation,EffectFade,EffectCube,EffectFlip,EffectCoverflow,EffectCreative,EffectCards];Swiper.use(modules);export{Swiper,Swiper as default}; +//# sourceMappingURL=swiper-bundle.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-bundle.min.mjs.map b/docs/vendor/swiper-bundle/swiper-bundle.min.mjs.map new file mode 100644 index 0000000..00ccec7 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.mjs.mjs","names":["Swiper","Virtual","Keyboard","Mousewheel","Navigation","Pagination","Scrollbar","Parallax","Zoom","Controller","A11y","History","HashNavigation","Autoplay","Thumb","freeMode","Grid","Manipulation","EffectFade","EffectCube","EffectFlip","EffectCoverflow","EffectCreative","EffectCards","modules","use"],"sources":["0"],"mappings":";;;;;;;;;;;;YAYcA,WAAc,sCACrBC,YAAa,mCACbC,aAAc,oCACdC,eAAgB,sCAChBC,eAAgB,sCAChBC,eAAgB,sCAChBC,cAAe,qCACfC,aAAc,oCACdC,SAAU,gCACVC,eAAgB,sCAChBC,SAAU,gCACVC,YAAa,mCACbC,mBAAoB,2CACpBC,aAAc,oCACdC,UAAW,kCACXC,aAAc,qCACdC,SAAU,gCACVC,iBAAkB,wCAClBC,eAAgB,uCAChBC,eAAgB,uCAChBC,eAAgB,uCAChBC,oBAAqB,4CACrBC,mBAAoB,2CACpBC,gBAAiB,iCAGxB,MAAMC,QAAU,CAACvB,QAASC,SAAUC,WAAYC,WAAYC,WAAYC,UAAWC,SAAUC,KAAMC,WAAYC,KAAMC,QAASC,eAAgBC,SAAUC,MAAOC,SAAUC,KAAMC,aAAcC,WAAYC,WAAYC,WAAYC,gBAAiBC,eAAgBC,aAClQvB,OAAOyB,IAAID,gBAEFxB,OAAQA"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-bundle.mjs b/docs/vendor/swiper-bundle/swiper-bundle.mjs new file mode 100644 index 0000000..e7cb018 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-bundle.mjs @@ -0,0 +1,42 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import Virtual from './modules/virtual.mjs'; +import Keyboard from './modules/keyboard.mjs'; +import Mousewheel from './modules/mousewheel.mjs'; +import Navigation from './modules/navigation.mjs'; +import Pagination from './modules/pagination.mjs'; +import Scrollbar from './modules/scrollbar.mjs'; +import Parallax from './modules/parallax.mjs'; +import Zoom from './modules/zoom.mjs'; +import Controller from './modules/controller.mjs'; +import A11y from './modules/a11y.mjs'; +import History from './modules/history.mjs'; +import HashNavigation from './modules/hash-navigation.mjs'; +import Autoplay from './modules/autoplay.mjs'; +import Thumb from './modules/thumbs.mjs'; +import freeMode from './modules/free-mode.mjs'; +import Grid from './modules/grid.mjs'; +import Manipulation from './modules/manipulation.mjs'; +import EffectFade from './modules/effect-fade.mjs'; +import EffectCube from './modules/effect-cube.mjs'; +import EffectFlip from './modules/effect-flip.mjs'; +import EffectCoverflow from './modules/effect-coverflow.mjs'; +import EffectCreative from './modules/effect-creative.mjs'; +import EffectCards from './modules/effect-cards.mjs'; + +// Swiper Class +const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; +Swiper.use(modules); + +export { Swiper, Swiper as default }; diff --git a/docs/vendor/swiper-bundle/swiper-effect-utils.d.ts b/docs/vendor/swiper-bundle/swiper-effect-utils.d.ts new file mode 100644 index 0000000..aaee39d --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-effect-utils.d.ts @@ -0,0 +1,28 @@ +import { Swiper, SwiperOptions } from './types/index.d.ts'; + +declare const createShadow: (suffix?: string, slideEl: HTMLElement, side?: string) => HTMLElement; + +declare const effectInit: (params: { + effect: string; + swiper: Swiper; + on: () => void; + setTranslate: () => void; + setTransition: (duration: number) => void; + overwriteParams?: () => SwiperOptions; + perspective?: () => boolean; + recreateShadows?: () => void; + getEffectParams?: () => { slideShadows?: boolean }; +}) => void; + +declare const effectTarget: (effectParams: any, slideEl: HTMLElement) => void; + +declare const effectVirtualTransitionEnd: (params: { + swiper: Swiper; + duration: number; + transformElements: HTMLElement[]; + allSlides?: boolean; +}) => void; + +declare const getSlideTransformEl: (slideEl: HTMLElement) => void; + +export { createShadow, effectInit, effectTarget, effectVirtualTransitionEnd, getSlideTransformEl }; diff --git a/docs/vendor/swiper-bundle/swiper-effect-utils.min.mjs b/docs/vendor/swiper-bundle/swiper-effect-utils.min.mjs new file mode 100644 index 0000000..3876027 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-effect-utils.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +export{c as createShadow}from"./shared/create-shadow.min.mjs";export{e as effectInit}from"./shared/effect-init.min.mjs";export{e as effectTarget}from"./shared/effect-target.min.mjs";export{e as effectVirtualTransitionEnd}from"./shared/effect-virtual-transition-end.min.mjs";export{g as getSlideTransformEl}from"./shared/utils.min.mjs"; +//# sourceMappingURL=swiper-effect-utils.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-effect-utils.min.mjs.map b/docs/vendor/swiper-bundle/swiper-effect-utils.min.mjs.map new file mode 100644 index 0000000..538571b --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-effect-utils.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-effect-utils.mjs.mjs","names":["c","e","g"],"sources":["0"],"mappings":";;;;;;;;;;;;OAYSA,sBAAyB,wCACzBC,oBAAuB,sCACvBA,sBAAyB,wCACzBA,oCAAuC,wDACvCC,6BAAgC"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-effect-utils.mjs b/docs/vendor/swiper-bundle/swiper-effect-utils.mjs new file mode 100644 index 0000000..617a784 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-effect-utils.mjs @@ -0,0 +1,17 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +export { c as createShadow } from './shared/create-shadow.mjs'; +export { e as effectInit } from './shared/effect-init.mjs'; +export { e as effectTarget } from './shared/effect-target.mjs'; +export { e as effectVirtualTransitionEnd } from './shared/effect-virtual-transition-end.mjs'; +export { g as getSlideTransformEl } from './shared/utils.mjs'; diff --git a/docs/vendor/swiper-bundle/swiper-element-bundle.js b/docs/vendor/swiper-bundle/swiper-element-bundle.js new file mode 100644 index 0000000..4f53ddb --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element-bundle.js @@ -0,0 +1,10262 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); + } + function getRotateFix(swiper) { + return v => { + if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { + return v + 0.001; + } + return v; + }; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + tempDOM.innerHTML = slideEl; + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + slideEl.innerHTML = slide; + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force, beforeInit) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides, + loop: isLoop, + initialSlide + } = swiper.params; + if (beforeInit && !isLoop && initialSlide > 0) { + return; + } + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(false, true); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } else if (res && res.length === 1) { + res = res[0]; + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); + if (swiper.isElement && !targetIsButton) { + const path = e.path || e.composedPath && e.composedPath(); + if (path) { + targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); + } + } + if (swiper.params.navigation.hideOnClick && !targetIsButton) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + let allowTouchMoveTimeout; + function allowTouchMove() { + swiper.touchEventsData.preventTouchMoveFromPointerMove = false; + } + function preventTouchMove() { + clearTimeout(allowTouchMoveTimeout); + swiper.touchEventsData.preventTouchMoveFromPointerMove = true; + allowTouchMoveTimeout = setTimeout(() => { + allowTouchMove(); + }); + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { + return; + } + const zoom = swiper.zoom; + if (!gesture.imageEl) { + return; + } + if (!image.isTouched || !gesture.slideEl) { + return; + } + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + allowTouchMove(); + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + allowTouchMove(); + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + preventTouchMove(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; + controlElements.forEach(controlElement => { + if (!swiper.controller.control) swiper.controller.control = []; + if (controlElement && controlElement.swiper) { + swiper.controller.control.push(controlElement.swiper); + } else if (controlElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onControllerSwiper = e => { + swiper.controller.control.push(e.detail[0]); + swiper.update(); + controlElement.removeEventListener(eventName, onControllerSwiper); + }; + controlElement.addEventListener(eventName, onControllerSwiper); + } + }); + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null, + scrollOnFocus: true + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + let preventFocusHandler; + let focusTargetSlideEl; + let visibilityChangedTimestamp = new Date().getTime(); + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { + const prevEls = makeElementsArray(swiper.navigation.prevEl); + const nextEls = makeElementsArray(swiper.navigation.nextEl); + if (nextEls.includes(targetEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (prevEls.includes(targetEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = e => { + if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { + preventFocusHandler = true; + } + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + preventFocusHandler = false; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const onVisibilityChange = e => { + visibilityChangedTimestamp = new Date().getTime(); + }; + const handleFocus = e => { + if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; + if (new Date().getTime() - visibilityChangedTimestamp < 100) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + focusTargetSlideEl = slideEl; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + requestAnimationFrame(() => { + if (preventFocusHandler) return; + if (swiper.params.loop) { + swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); + } else { + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + } + preventFocusHandler = false; + }); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + // Tab focus + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + } + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject$1(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener(eventName, onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener(eventName, onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const r = getRotateFix(swiper); + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + const rotateFix = getRotateFix(swiper); + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + const r = getRotateFix(swiper); + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + const rotateFix = getRotateFix(swiper); + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + /* underscore in name -> watch for changes */ + const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const arrowSvg = ` + `; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/docs/vendor/swiper-bundle/swiper-element-bundle.min.js b/docs/vendor/swiper-bundle/swiper-element-bundle.min.js new file mode 100644 index 0000000..955fd29 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((a=>{void 0===s[a]?s[a]=i[a]:e(i[a])&&e(s[a])&&Object.keys(i[a]).length>0&&t(s[a],i[a])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const a={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,a),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let i,a,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(a=l.transform||l.webkitTransform,a.split(",").length>6&&(a=a.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===a?"":a)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=n.toString().split(",")),"x"===t&&(a=s.WebKitCSSMatrix?n.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(a=s.WebKitCSSMatrix?n.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),a||0}function p(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;tn?"next":"prev",c=(e,t)=>"next"===p&&e>=t||"prev"===p&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let p=n+r*(s-n);if(c(p,s)&&(p=s),t.wrapperEl.scrollTo({[i]:p}),c(p,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:p})})),void a.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=a.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=i(),a=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,p=e===t?t.scrollX:e.scrollLeft;return{top:a.top+d-l,left:a.left+p-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function x(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}function E(e,t){t&&e.addEventListener("transitionend",(function s(i){i.target===e&&(t.call(e,i),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const i=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function T(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}function M(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}let C,P,L;function z(){return C||(C=function(){const e=r(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),C}function k(e){return void 0===e&&(e={}),P||(P=function(e){let{userAgent:t}=void 0===e?{}:e;const s=z(),i=r(),a=i.navigator.platform,n=t||i.navigator.userAgent,l={ios:!1,android:!1},o=i.screen.width,d=i.screen.height,p=n.match(/(Android);?[\s\/]+([\d.]+)?/);let c=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!c&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===a;let f="MacIntel"===a;return!c&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(c=n.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),f=!1),p&&!h&&(l.os="android",l.android=!0),(c||m||u)&&(l.os="ios",l.ios=!0),l}(e)),P}function A(){return L||(L=function(){const e=r(),t=k();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const a=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=i();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||a&&t.ios,isWebView:a}}()),L}var $={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const a=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][a](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function a(){i.off(e,a),a.__emitterProxy&&delete a.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,a)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(a,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var a=arguments.length,r=new Array(a),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const I=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const O=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const D=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},_=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},G=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),a=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=a,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&_(e,s)}))}const r=a+i-1;if(e.params.rewind||e.params.loop)for(let i=a-t;i<=r+t;i+=1){const t=(i%s+s)%s;(tr)&&_(e,t)}else for(let i=Math.max(a-t,0);i<=Math.min(r+t,s-1);i+=1)i!==a&&(i>r||i=0?E=parseFloat(E.replace("%",""))/100*r:"string"==typeof E&&(E=parseFloat(E)),e.virtualSize=-E,p.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(i,"--swiper-centered-offset-before",""),u(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(p):e.grid&&e.grid.unsetSlides();const z="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+E;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),a=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==p.length-1)).forEach((e=>{e.style[t]=`${E}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(E||0)})),e-=E;const t=e-r;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(E||0)})),e-=E;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{m[t]=e-s})),h.forEach(((e,t)=>{h[t]=e+s}))}}if(Object.assign(e,{slides:p,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(i,"--swiper-centered-offset-before",-m[0]+"px"),u(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(c!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==x&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);c<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let a,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(a=0;at.slides.length&&!i)break;s.push(n(e))}else s.push(n(t.activeIndex));for(a=0;ar?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&m<=t.size||u<=0&&m>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),I(o,f,s.slideVisibleClass),I(o,h,s.slideFullyVisibleClass),o.progress=a?-p:p,o.originalProgress=a?-c:c}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:a,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===i)a=0,r=!0,n=!0;else{a=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||a<=0,n=l||a>=1,s&&(a=0),l&&(a=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),a=t.slidesGrid[s],r=t.slidesGrid[i],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=a?(o-a)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:a,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",a)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:a}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,p;if(r)if(s.loop){let t=a-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${a}"]`);else n?(o=t.filter((e=>e.column===a))[0],p=t.filter((e=>e.column===a+1))[0],d=t.filter((e=>e.column===a-1))[0]):o=t[a];o&&(n||(p=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!p&&(p=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{O(e,e===o,s.slideActiveClass),O(e,e===p,s.slideNextClass),O(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:a,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const p=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let a;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(a=e);return s.normalizeSlideIndex&&(a<0||void 0===a)&&(a=0),a}(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(a.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/a.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=p(d));const c=t.grid&&a.grid&&a.grid.rows>1;let u;if(t.virtual&&a.virtual.enabled&&a.loop)u=p(d);else if(c){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/a.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&G(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let a=e.closest(`.${i.slideClass}, swiper-slide`);!a&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!a&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(a=e)}));let r,n=!1;if(a)for(let e=0;eo?o:i&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==c){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(c||0)!==n)return!1}let b;if(n!==(p||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>c?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,i),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const a=this;if(a.destroyed)return;void 0===t&&(t=a.params.speed);const r=a.grid&&a.params.grid&&a.params.grid.rows>1;let n=e;if(a.params.loop)if(a.virtual&&a.params.virtual.enabled)n+=a.virtual.slidesBefore;else{let e;if(r){const t=n*a.params.grid.rows;e=a.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=a.getSlideIndexByData(n);const t=r?Math.ceil(a.slides.length/a.params.grid.rows):a.slides.length,{centeredSlides:s}=a.params;let l=a.params.slidesPerView;"auto"===l?l=a.slidesPerViewDynamic():(l=Math.ceil(parseFloat(a.params.slidesPerView,10)),s&&l%2==0&&(l+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=a.getSlideIndexByData(n)}return requestAnimationFrame((()=>{a.slideTo(n,t,s,i)})),a},slideNext:function(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:a,params:r,animating:n}=i;if(!a||i.destroyed)return i;void 0===e&&(e=i.params.speed);let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)})),!0}return r.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const i=this,{params:a,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=i;if(!o||i.destroyed)return i;void 0===e&&(e=i.params.speed);const p=i.virtual&&a.virtual.enabled;if(a.loop){if(d&&!p&&a.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function c(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=c(l?i.translate:-i.translate),m=r.map((e=>c(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&a.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=i.activeIndex-1),"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(f=f-i.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),a.rewind&&i.isBeginning){const a=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(a,e,t,s)}return a.loop&&0===i.activeIndex&&a.cssMode?(requestAnimationFrame((()=>{i.slideTo(f,e,t,s)})),!0):i.slideTo(f,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const a=this;if(a.destroyed)return;void 0===e&&(e=a.params.speed);let r=a.activeIndex;const n=Math.min(a.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/a.params.slidesPerGroup),o=a.rtlTranslate?a.translate:-a.translate;if(o>=a.snapGrid[l]){const e=a.snapGrid[l];o-e>(a.snapGrid[l+1]-e)*i&&(r+=a.params.slidesPerGroup)}else{const e=a.snapGrid[l-1];o-e<=(a.snapGrid[l]-e)*i&&(r-=a.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,a.slidesGrid.length-1),a.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let a,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;a=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+i/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${a}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-i?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${a}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var X={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const a=()=>{f(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):E=r;const S="next"===i||!i,T="prev"===i||!i;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===a?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&x.push(s)})):x.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&x.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||x.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[E],t=o.slidesGrid[E+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(E+Math.ceil(M),0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(a){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(x.length>0&&S)if(void 0===t){const e=o.slidesGrid[E],t=o.slidesGrid[E-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(E-C,0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?x.length/m.grid.rows:x.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=p,o.allowSlideNext=c,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:i,setTranslate:a,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function Y(e,t,s){const i=r(),{params:a}=e,n=a.edgeSwipeDetection,l=a.edgeSwipeThreshold;return!n||!(s<=l||s>=i.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function q(e){const t=this,s=i();let a=e;a.originalEvent&&(a=a.originalEvent);const n=t.touchEventsData;if("pointerdown"===a.type){if(null!==n.pointerId&&n.pointerId!==a.pointerId)return;n.pointerId=a.pointerId}else"touchstart"===a.type&&1===a.targetTouches.length&&(n.touchId=a.targetTouches[0].identifier);if("touchstart"===a.type)return void Y(t,a,a.targetTouches[0].pageX);const{params:l,touches:d,enabled:p}=t;if(!p)return;if(!l.simulateTouch&&"mouse"===a.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let c=a.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...element.assignedElements()].includes(e);return s}(c,t.wrapperEl))return;if("which"in a&&3===a.which)return;if("button"in a&&a.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=a.composedPath?a.composedPath():a.path;u&&a.target&&a.target.shadowRoot&&m&&(c=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!a.target||!a.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const a=s.closest(e);return a||s.getRootNode?a||t(s.getRootNode().host):null}(t)}(h,c):c.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!c.closest(l.swipeHandler))return;d.currentX=a.pageX,d.currentY=a.pageY;const g=d.currentX,v=d.currentY;if(!Y(t,a,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;c.matches(n.focusableElements)&&(w=!1,"SELECT"===c.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==c&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||c.isContentEditable||a.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",a)}function F(e){const t=i(),s=this,a=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let p,c=e;if(c.originalEvent&&(c=c.originalEvent),"pointermove"===c.type){if(null!==a.touchId)return;if(c.pointerId!==a.pointerId)return}if("touchmove"===c.type){if(p=[...c.changedTouches].filter((e=>e.identifier===a.touchId))[0],!p||p.identifier!==a.touchId)return}else p=c;if(!a.isTouched)return void(a.startMoving&&a.isScrolling&&s.emit("touchMoveOpposite",c));const u=p.pageX,m=p.pageY;if(c.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return c.target.matches(a.focusableElements)||(s.allowClick=!1),void(a.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),a.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return a.isTouched=!1,void(a.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&c.target===t.activeElement&&c.target.matches(a.focusableElements))return a.isMoved=!0,void(s.allowClick=!1);a.allowTouchCallbacks&&s.emit("touchMove",c),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,a.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(a.isScrolling&&s.emit("touchMoveOpposite",c),void 0===a.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(a.startMoving=!0)),a.isScrolling||"touchmove"===c.type&&a.preventTouchMoveFromPointerMove)return void(a.isTouched=!1);if(!a.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!a.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),a.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}a.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)}if((new Date).getTime(),a.isMoved&&a.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:a.currentTranslate}),a.loopSwapReset=!0,void(a.startTranslate=a.currentTranslate);s.emit("sliderMove",c),a.isMoved=!0,a.currentTranslate=g+a.startTranslate;let x=!0,E=r.resistanceRatio;if(r.touchReleaseOnEdges&&(E=0),g>0?(b&&y&&a.allowThresholdMove&&a.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),a.currentTranslate>s.minTranslate()&&(x=!1,r.resistance&&(a.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+a.startTranslate+g)**E))):g<0&&(b&&y&&a.allowThresholdMove&&a.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),a.currentTranslatea.startTranslate&&(a.currentTranslate=a.startTranslate),s.allowSlidePrev||s.allowSlideNext||(a.currentTranslate=a.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||a.allowThresholdMove))return void(a.currentTranslate=a.startTranslate);if(!a.allowThresholdMove)return a.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,a.currentTranslate=a.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(a.currentTranslate),s.setTranslate(a.currentTranslate))}function V(e){const t=this,s=t.touchEventsData;let i,a=e;a.originalEvent&&(a=a.originalEvent);if("touchend"===a.type||"touchcancel"===a.type){if(i=[...a.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(a.pointerId!==s.pointerId)return;i=a}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(a.type)){if(!(["pointercancel","contextmenu"].includes(a.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:p,enabled:c}=t;if(!c)return;if(!r.simulateTouch&&"mouse"===a.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",a),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=a.path||a.composedPath&&a.composedPath();t.updateClickedSlide(e&&e[0]||a.target,e),t.emit("tap click",a),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",a)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=p[e]&&h=p[e])&&(g=e,v=p[p.length-1]-p[p.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-p[g])/v,x=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+x):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+x):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(a.target===t.navigation.nextEl||a.target===t.navigation.prevEl)?a.target===t.navigation.nextEl?t.slideTo(g+x):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+x),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function j(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:a,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=a,e.allowSlideNext=i,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function W(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function U(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let a;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();a=0===r?0:(e.translate-e.minTranslate())/r,a!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function K(e){const t=this;D(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function Z(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const Q=(e,t)=>{const s=i(),{params:a,el:r,wrapperEl:n,device:l}=e,o=!!a.nested,d="on"===t?"addEventListener":"removeEventListener",p=t;r&&"string"!=typeof r&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(a.preventClicks||a.preventClicksPropagation)&&r[d]("click",e.onClick,!0),a.cssMode&&n[d]("scroll",e.onScroll),a.updateOnWindowResize?e[p](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",j,!0):e[p]("observerUpdate",j,!0),r[d]("load",e.onLoad,{capture:!0}))};const J=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var ee={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function te(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],a=s[i];"object"==typeof a&&null!==a?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in a?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const se={eventsEmitter:$,update:N,translate:B,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),H({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),H({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:R,loop:X,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=q.bind(e),e.onTouchMove=F.bind(e),e.onTouchEnd=V.bind(e),e.onDocumentTouchStart=Z.bind(e),t.cssMode&&(e.onScroll=U.bind(e)),e.onClick=W.bind(e),e.onLoad=K.bind(e),Q(e,"on")},detachEvents:function(){Q(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:a}=e,r=i.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=J(e,i),d=J(e,l),p=e.params.grabCursor,u=l.grabCursor,m=i.enabled;o&&!d?(a.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(a.classList.add(`${i.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===i.grid.fill)&&a.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),p&&!u?e.unsetGrabCursor():!p&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=i[t]&&i[t].enabled,a=l[t]&&l[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const h=l.direction&&l.direction!==i.direction,f=i.loop&&(l.slidesPerView!==i.slidesPerView||h),g=i.loop;h&&s&&e.changeDirection(),c(e.params,l);const v=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),m&&!v?e.disable():!m&&v&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(f?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!g&&w?(e.loopCreate(t),e.updateSlides()):g&&!w&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const a=r(),n="window"===t?a.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:a,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),a.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},ie={};class ae{constructor(){let e,t;for(var s=arguments.length,a=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new ae(i))})),e}const l=this;l.__swiper__=!0,l.support=z(),l.device=k({userAgent:t.userAgent}),l.browser=A(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:te(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=c({},ee,o);return l.params=c({},d,ie,t),l.originalParams=c({},l.params),l.passedParams=c({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),a=(s.maxTranslate()-i)*e+i;s.translateTo(a,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:a,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?Math.ceil(i[l].swiperSlideSize):0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){a[l]-a[e]{t.complete&&D(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;a=e.slideTo(t.length-1,0,!1,!0)}else a=e.slideTo(e.activeIndex,0,!1,!0);a||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let a=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return f(s,i())[0]})();return!a&&t.params.createElements&&(a=v("div",t.params.wrapperClass),s.append(a),f(s,`.${t.params.slideClass}`).forEach((e=>{a.append(e)}))),Object.assign(t,{el:s,wrapperEl:a,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:a,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(a,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?D(t,e):e.addEventListener("load",(e=>{D(t,e.target)}))})),G(t),t.initialized=!0,G(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:a,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),a&&"string"!=typeof a&&a.removeAttribute("style"),r&&r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(ie,e)}static get extendedDefaults(){return ie}static get defaults(){return ee}static installModule(e){ae.prototype.__modules__||(ae.prototype.__modules__=[]);const t=ae.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>ae.installModule(e))),ae):(ae.installModule(e),ae)}}function re(e,t,s,i){return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let r=f(e.el,`.${i[a]}`)[0];r||(r=v("div",i[a]),r.className=i[a],e.el.append(r)),s[a]=r,t[a]=r}})),s}function ne(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function le(e){const t=this,{params:s,slidesEl:i}=t;s.loop&&t.loopDestroy();const a=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.append(t.children[0]),t.innerHTML=""}else i.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.prepend(t.children[0]),t.innerHTML=""}else a.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),i("setTranslate",(()=>{s.params.effect===t&&a()})),i("setTransition",((e,i)=>{s.params.effect===t&&r(i)})),i("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),i("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(p=!0),requestAnimationFrame((()=>{p&&s.slides&&s.slides.length&&(a(),p=!1)})))}))}function me(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function he(e){let{swiper:t,duration:s,transformElements:i,allSlides:a}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=a?i:i.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{E(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function fe(e,t,s){const i=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=h(t);let r=a.querySelector(`.${i.split(" ").join(".")}`);return r||(r=v("div",i.split(" ")),a.append(r)),r}Object.keys(se).forEach((e=>{Object.keys(se[e]).forEach((t=>{ae.prototype[t]=se[e][t]}))})),ae.use([function(e){let{swiper:t,on:s,emit:i}=e;const a=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==a.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=a.requestAnimationFrame((()=>{const{width:s,height:i}=t;let a=s,r=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:n}=e;n&&n!==t.el||(a=i?i.width:(s[0]||s).inlineSize,r=i?i.height:(s[0]||s).blockSize)})),a===s&&r===i||o()}))})),n.observe(t.el)):(a.addEventListener("resize",o),a.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&a.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),a.removeEventListener("resize",o),a.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const i=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void a("observerUpdate",e[0]);const s=function(){a("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=x(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ge=[function(e){let t,{swiper:s,extendParams:a,on:r,emit:n}=e;a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=i();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const i=s.params.virtual;if(i.cache&&s.virtual.cache[t])return s.virtual.cache[t];let a;return i.renderSlide?(a=i.renderSlide.call(s,e,t),"string"==typeof a&&(o.innerHTML=a,a=o.children[0])):a=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),a.setAttribute("data-swiper-slide-index",t),i.renderSlide||(a.innerHTML=e),i.cache&&(s.virtual.cache[t]=a),a}function p(e,t){const{slidesPerView:i,slidesPerGroup:a,centeredSlides:r,loop:l,initialSlide:o}=s.params;if(t&&!l&&o>0)return;const{addSlidesBefore:p,addSlidesAfter:c}=s.params.virtual,{from:u,to:m,slides:h,slidesGrid:g,offset:v}=s.virtual;s.params.cssMode||s.updateActiveIndex();const w=s.activeIndex||0;let b,y,x;b=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",r?(y=Math.floor(i/2)+a+c,x=Math.floor(i/2)+a+p):(y=i+(a-1)+c,x=(l?i:a)+p);let E=w-x,S=w+y;l||(E=Math.max(E,0),S=Math.min(S,h.length-1));let T=(s.slidesGrid[E]||0)-(s.slidesGrid[0]||0);function M(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(l&&w>=x?(E-=x,r||(T+=s.slidesGrid[0])):l&&w{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:T,from:E,to:S,slides:function(){const e=[];for(let t=E;t<=S;t+=1)e.push(h[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?M():n("virtualUpdate"));const C=[],P=[],L=e=>{let t=e;return e<0?t=h.length+e:t>=h.length&&(t-=h.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=u;e<=m;e+=1)if(eS){const t=L(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const z=l?-h.length:0,k=l?2*h.length:h.length;for(let t=z;t=E&&t<=S){const s=L(t);void 0===m||e?P.push(s):(t>m&&P.push(s),t{s.slidesEl.append(d(h[e],e))})),l)for(let e=C.length-1;e>=0;e-=1){const t=C[e];s.slidesEl.prepend(d(h[t],t))}else C.sort(((e,t)=>t-e)),C.forEach((e=>{s.slidesEl.prepend(d(h[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),M()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,p(!1,!0)})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{p()}),100)):p())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const i=e[s],r=i.getAttribute("data-swiper-slide-index");r&&i.setAttribute("data-swiper-slide-index",parseInt(r,10)+a),t[parseInt(s,10)+a]=i})),s.virtual.cache=t}p(!0),s.slideTo(i,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let i=e.length-1;i>=0;i-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[i]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[i],1),e[i]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===x(t.el,`.${t.params.slideActiveClass}`).length)return;const i=t.el,a=i.clientWidth,r=i.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(i);s&&(d.left-=i.scrollLeft);const p=[[d.left,d.top],[d.left+a,d.top],[d.left,d.top+r],[d.left+a,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||p||c||u)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),((p||u)&&!s||(d||c)&&s)&&t.slideNext(),((d||c)&&!s||(p||u)&&s)&&t.slidePrev()):((d||p||m||h)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),(p||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",a)}}function p(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function c(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&p()})),a("destroy",(()=>{t.keyboard.enabled&&c()})),Object.assign(t.keyboard,{enable:p,disable:c})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let p,c=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-c<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),a("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),a("scroll",e.raw)),c=(new n.Date).getTime(),!1)))}function g(e){let s=e,i=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const c=n&&n.contains(s.target);if(!t.mouseEntered&&!c&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,i=0,a=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),i=10*t,a=10*s,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(i=e.deltaX),e.shiftKey&&!i&&(i=a,a=0),(i||a)&&e.deltaMode&&(1===e.deltaMode?(i*=40,a*=40):(i*=800,a*=800)),i&&!t&&(t=i<1?-1:1),a&&!s&&(s=a<1?-1:1),{spinX:t,spinY:s,pixelX:i,pixelY:a}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),i=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),i&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},i=p&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!c&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,i=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-i.time<500&&i.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;p=e,u.splice(0),d=l((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{p=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(i||a("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const i=u.length?u[u.length-1]:void 0;if(u.push(s),i?(s.direction!==i.direction||s.delta>i.delta||s.time>i.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}i("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),i("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;function r(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s&&s.length>1&&1===t.el.querySelectorAll(e).length?s=t.el.querySelector(e):s&&1===s.length&&(s=s[0])),e&&!s?e:s)}function n(e,s){const i=t.params.navigation;(e=T(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](i.lockClass))}))}function l(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return n(s,!1),void n(e,!1);n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),a("navigationPrev"))}function d(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),a("navigationNext"))}function p(){const e=t.params.navigation;if(t.params.navigation=re(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=r(e.nextEl),i=r(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:i}),s=T(s),i=T(i);const a=(s,i)=>{s&&s.addEventListener("click","next"===i?d:o),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>a(e,"next"))),i.forEach((e=>a(e,"prev")))}function c(){let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s);const i=(e,s)=>{e.removeEventListener("click","next"===s?d:o),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>i(e,"next"))),s.forEach((e=>i(e,"prev")))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null},i("init",(()=>{!1===t.params.navigation.enabled?u():(p(),l())})),i("toEdge fromEdge lock unlock",(()=>{l()})),i("destroy",(()=>{c()})),i("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s),t.enabled?l():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),i("click",((e,s)=>{let{nextEl:i,prevEl:r}=t.navigation;i=T(i),r=T(r);const n=s.target;let l=r.includes(n)||i.includes(n);if(t.isElement&&!l){const e=s.path||s.composedPath&&s.composedPath();e&&(l=e.find((e=>i.includes(e)||r.includes(e))))}if(t.params.navigation.hideOnClick&&!l){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;i.length?e=i[0].classList.contains(t.params.navigation.hiddenClass):r.length&&(e=r[0].classList.contains(t.params.navigation.hiddenClass)),a(!0===e?"navigationShow":"navigationHide"),[...i,...r].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const u=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),c()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),p(),l()},disable:u,update:l,init:p,destroy:c})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function d(e,s){const{bulletActiveClass:i}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${i}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${i}-${s}-${s}`))}function p(e){const s=e.target.closest(ne(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const i=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===i)return;t.slideToLoop(i)}else t.slideTo(i)}function c(){const e=t.rtl,s=t.params.pagination;if(o())return;let i,r,p=t.pagination.el;p=T(p);const c=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,u=t.params.loop?Math.ceil(c/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,i=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(i=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,i=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let o,c,u;if(s.dynamicBullets&&(n=S(a[0],t.isHorizontal()?"width":"height",!0),p.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=i-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(i-l,0),c=o+(Math.min(a.length,s.dynamicMainBullets)-1),u=(c+o)/2),a.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),p.length>1)a.forEach((e=>{const a=y(e);a===i?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(a>=o&&a<=c&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),a===o&&d(e,"prev"),a===c&&d(e,"next"))}));else{const e=a[i];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&a.forEach(((e,t)=>{e.setAttribute("part",t===i?"bullet-active":"bullet")})),s.dynamicBullets){const e=a[o],t=a[c];for(let e=o;e<=c;e+=1)a[e]&&a[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));d(e,"prev"),d(t,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}p.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(ne(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(i+1)})),e.querySelectorAll(ne(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(u)}))),"progressbar"===s.type){let a;a=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(i+1)/u;let n=1,l=1;"horizontal"===a?n=r:l=r,e.querySelectorAll(ne(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,i+1,u),0===r&&a("paginationRender",e)):(0===r&&a("paginationRender",e),a("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let i=t.pagination.el;i=T(i);let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&i>s&&(i=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],i.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(ne(e.bulletClass)))})),"custom"!==e.type&&a("paginationRender",i[0])}function m(){t.params.pagination=re(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>x(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=T(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",p),t.enabled||s.classList.add(e.lockClass)})))}function h(){const e=t.params.pagination;if(o())return;let s=t.pagination.el;s&&(s=T(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",p))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}i("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),i("init",(()=>{!1===t.params.pagination.enabled?f():(m(),u(),c())})),i("activeIndexChange",(()=>{void 0===t.snapIndex&&c()})),i("snapIndexChange",(()=>{c()})),i("snapGridLengthChange",(()=>{u(),c()})),i("destroy",(()=>{h()})),i("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),i("lock unlock",(()=>{c()})),i("click",((e,s)=>{const i=s.target,r=T(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!i.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&i===t.navigation.nextEl||t.navigation.prevEl&&i===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);a(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const f=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),h()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),m(),u(),c()},disable:f,render:u,update:c,init:m,destroy:h})},function(e){let{swiper:t,extendParams:s,on:a,emit:r}=e;const o=i();let d,p,c,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:i,el:a}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=p,o=(c-p)*n;s?(o=-o,o>0?(l=p-o,o=0):-o+p>c&&(l=c+o)):o<0?(l=p+o,o=0):o+p>c&&(l=c-o),t.isHorizontal()?(i.style.transform=`translate3d(${o}px, 0, 0)`,i.style.width=`${l}px`):(i.style.transform=`translate3d(0px, ${o}px, 0)`,i.style.height=`${l}px`),r.hide&&(clearTimeout(h),a.style.opacity=1,h=setTimeout((()=>{a.style.opacity=0,a.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:i}=e;s.style.width="",s.style.height="",c=t.isHorizontal()?i.offsetWidth:i.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),p="auto"===t.params.scrollbar.dragSize?c*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${p}px`:s.style.height=`${p}px`,i.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(i.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function x(e){const{scrollbar:s,rtlTranslate:i}=t,{el:a}=s;let r;r=(y(e)-w(a)[t.isHorizontal()?"left":"top"]-(null!==d?d:p/2))/(c-p),r=Math.max(Math.min(r,1),0),i&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function E(e){const s=t.params.scrollbar,{scrollbar:i,wrapperEl:a}=t,{el:n,dragEl:l}=i;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),a.style.transitionDuration="100ms",l.style.transitionDuration="100ms",x(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:i}=t,{el:a,dragEl:n}=s;m&&(e.preventDefault&&e.cancelable?e.preventDefault():e.returnValue=!1,x(e),i.style.transitionDuration="0ms",a.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function M(e){const s=t.params.scrollbar,{scrollbar:i,wrapperEl:a}=t,{el:n}=i;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",a.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,params:i}=t,a=s.el;if(!a)return;const r=a,n=!!i.passiveListeners&&{passive:!1,capture:!1},l=!!i.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",E,n),o[d]("pointermove",S,n),o[d]("pointerup",M,l)}function P(){const{scrollbar:e,el:s}=t;t.params.scrollbar=re(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const i=t.params.scrollbar;if(!i.el)return;let a,r;if("string"==typeof i.el&&t.isElement&&(a=t.el.querySelector(i.el)),a||"string"!=typeof i.el)a||(a=i.el);else if(a=o.querySelectorAll(i.el),!a.length)return;t.params.uniqueNavElements&&"string"==typeof i.el&&a.length>1&&1===s.querySelectorAll(i.el).length&&(a=s.querySelector(i.el)),a.length>0&&(a=a[0]),a.classList.add(t.isHorizontal()?i.horizontalClass:i.verticalClass),a&&(r=a.querySelector(ne(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),a.append(r))),Object.assign(e,{el:a,dragEl:r}),i.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),a&&a.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function L(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},a("changeDirection",(()=>{if(!t.scrollbar||!t.scrollbar.el)return;const e=t.params.scrollbar;let{el:s}=t.scrollbar;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.scrollbar.enabled?z():(P(),b(),g())})),a("update resize observerUpdate lock unlock changeDirection",(()=>{b()})),a("setTranslate",(()=>{g()})),a("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),a("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),a("destroy",(()=>{L()}));const z=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),L()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),P(),b(),g()},disable:z,updateSize:b,setTranslate:g,init:P,destroy:L})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({parallax:{enabled:!1}});const a="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:i}=t,a=i?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),p=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*a+"%":n*s*a+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let c=`translate3d(${n}, ${l}, 0px)`;if(null!=o){c+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(p&&null!=p){c+=` rotate(${p*s*-1}deg)`}e.style.transform=c},n=()=>{const{el:e,slides:s,progress:i,snapGrid:n,isElement:l}=t,o=f(e,a);t.isElement&&o.push(...f(t.hostEl,a)),o.forEach((e=>{r(e,i)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-i*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${a}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};i("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),i("init",(()=>{t.params.parallax.enabled&&n()})),i("setTranslate",(()=>{t.params.parallax.enabled&&n()})),i("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:i}=t,r=[...s.querySelectorAll(a)];t.isElement&&r.push(...i.querySelectorAll(a)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=r();s({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,p=1,c=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v,b=1;function y(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,i=u[1].pageY;return Math.sqrt((s-e)**2+(i-t)**2)}function E(){const e=t.params.zoom,s=m.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&m.imageEl&&m.imageEl.naturalWidth){const e=m.imageEl.naturalWidth/m.imageEl.offsetWidth;return Math.min(e,s)}return s}function S(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function T(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!S(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=y(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let i=m.slideEl.querySelector(`.${s.containerClass}`);if(i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=i,m.imageWrapEl=i?x(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=E()}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/p,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/p]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}c=!0}}function M(e){if(!S(e))return;const s=t.params.zoom,i=t.zoom,a=u.findIndex((t=>t.pointerId===e.pointerId));a>=0&&(u[a]=e),u.length<2||(o=!0,m.scaleMove=y(),m.imageEl&&(i.scale=m.scaleMove/m.scaleStart*p,i.scale>m.maxRatio&&(i.scale=m.maxRatio-1+(i.scale-m.maxRatio+1)**.5),i.scalet.pointerId===e.pointerId));a>=0&&u.splice(a,1),l&&o&&(l=!1,o=!1,m.imageEl&&(i.scale=Math.max(Math.min(i.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`,p=i.scale,c=!1,i.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):i.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===i.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function P(){t.touchEventsData.preventTouchMoveFromPointerMove=!1}function L(e){if(!S(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth||m.imageEl.clientWidth,h.height=m.imageEl.offsetHeight||m.imageEl.clientHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const i=h.width*s.scale,a=h.height*s.scale;h.minX=Math.min(m.slideWidth/2-i/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-a/2,0),h.maxY=-h.minY,h.touchesCurrent.x=u.length>0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!c){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return h.isTouched=!1,void P();if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return h.isTouched=!1,void P()}e.cancelable&&e.preventDefault(),e.stopPropagation(),clearTimeout(v),t.touchEventsData.preventTouchMoveFromPointerMove=!0,v=setTimeout((()=>{P()})),h.isMoved=!0;const r=(s.scale-p)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function z(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,p=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function k(e){const s=t.zoom,i=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${i.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?x(m.imageEl,`.${i.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let a,r,l,o,d,c,u,g,v,b,y,S,T,M,C,P,L,z;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${i.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(a=e.pageX,r=e.pageY):(a=h.touchesStart.x,r=h.touchesStart.y);const k="number"==typeof e?e:null;1===p&&k&&(a=void 0,r=void 0);const A=E();s.scale=k||A,p=k||A,!e||1===p&&k?(u=0,g=0):(L=m.slideEl.offsetWidth,z=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+L/2-a,c=o+z/2-r,v=m.imageEl.offsetWidth||m.imageEl.clientWidth,b=m.imageEl.offsetHeight||m.imageEl.clientHeight,y=v*s.scale,S=b*s.scale,T=Math.min(L/2-y/2,0),M=Math.min(z/2-S/2,0),C=-T,P=-M,u=d*s.scale,g=c*s.scale,uC&&(u=C),gP&&(g=P)),k&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function A(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?x(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,p=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function $(e){const s=t.zoom;s.scale&&1!==s.scale?A():k(e)}function I(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:i}=I();t.wrapperEl.addEventListener("pointerdown",T,s),t.wrapperEl.addEventListener("pointermove",M,i),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,C,s)})),t.wrapperEl.addEventListener("pointermove",L,i)}function D(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:i}=I();t.wrapperEl.removeEventListener("pointerdown",T,s),t.wrapperEl.removeEventListener("pointermove",M,i),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,C,s)})),t.wrapperEl.removeEventListener("pointermove",L,i)}Object.defineProperty(t.zoom,"scale",{get:()=>b,set(e){if(b!==e){const t=m.imageEl,s=m.slideEl;a("zoomChange",e,t,s)}b=e}}),i("init",(()=>{t.params.zoom.enabled&&O()})),i("destroy",(()=>{D()})),i("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const i=u.length>0?u[0]:e;h.touchesStart.x=i.pageX,h.touchesStart.y=i.pageY}(s)})),i("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,i=300;const a=g.x*s,r=h.currentX+a,n=g.y*i,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(i=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,i);h.currentX=r,h.currentY=l;const d=h.width*e.scale,p=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-p/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),i("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&$(s)})),i("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&z()})),i("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&z()})),Object.assign(t.zoom,{enable:O,disable:D,in:k,out:A,toggle:$})},function(e){let{swiper:t,extendParams:s,on:i}=e;function a(e,t){const s=function(){let e,t,s;return(i,a)=>{for(t=-1,e=i.length;e-t>1;)s=e+t>>1,i[s]<=a?t=s:e=s;return e}}();let i,a;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(a=s(this.x,e),i=a-1,(e-this.x[i])*(this.y[a]-this.y[i])/(this.x[a]-this.x[i])+this.y[i]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},i("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){("string"==typeof t.params.controller.control?[...document.querySelectorAll(t.params.controller.control)]:[t.params.controller.control]).forEach((e=>{if(t.controller.control||(t.controller.control=[]),e&&e.swiper)t.controller.control.push(e.swiper);else if(e){const s=`${t.params.eventsPrefix}init`,i=a=>{t.controller.control.push(a.detail[0]),t.update(),e.removeEventListener(s,i)};e.addEventListener(s,i)}}))}else t.controller.control=t.params.controller.control})),i("update",(()=>{r()})),i("resize",(()=>{r()})),i("observerUpdate",(()=>{r()})),i("setTranslate",((e,s,i)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,i)})),i("setTransition",((e,s,i)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,i)})),Object.assign(t.controller,{setTranslate:function(e,s){const i=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new a(t.slidesGrid,e.slidesGrid):new a(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(i))for(let e=0;e{s.updateAutoHeight()})),E(s.wrapperEl,(()=>{a&&s.transitionEnd()}))))}if(Array.isArray(a))for(r=0;r{e.setAttribute("tabIndex","0")}))}function c(e){(e=T(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function u(e,t){(e=T(e)).forEach((e=>{e.setAttribute("role",t)}))}function m(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function h(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function f(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function g(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function w(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,i=e.target;if(!t.pagination||!t.pagination.el||i!==t.pagination.el&&!t.pagination.el.contains(e.target)||e.target.matches(ne(t.params.pagination.bulletClass))){if(t.navigation&&t.navigation.prevEl&&t.navigation.nextEl){const e=T(t.navigation.prevEl);T(t.navigation.nextEl).includes(i)&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?d(s.lastSlideMessage):d(s.nextSlideMessage)),e.includes(i)&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?d(s.firstSlideMessage):d(s.prevSlideMessage))}t.pagination&&i.matches(ne(t.params.pagination.bulletClass))&&i.click()}}function b(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function x(){return b()&&t.params.pagination.clickable}const E=(e,t,s)=>{p(e),"BUTTON"!==e.tagName&&(u(e,"button"),e.addEventListener("keydown",w)),h(e,s),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},S=e=>{n&&n!==e.target&&!n.contains(e.target)&&(r=!0),t.a11y.clicked=!0},M=()=>{r=!1,requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},C=e=>{o=(new Date).getTime()},P=e=>{if(t.a11y.clicked||!t.params.a11y.scrollOnFocus)return;if((new Date).getTime()-o<100)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;n=s;const i=t.slides.indexOf(s)===t.activeIndex,a=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);i||a||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,requestAnimationFrame((()=>{r||(t.params.loop?t.slideToLoop(parseInt(s.getAttribute("data-swiper-slide-index")),0):t.slideTo(t.slides.indexOf(s),0),r=!1)})))},L=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&m(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&u(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((i,a)=>{const r=t.params.loop?parseInt(i.getAttribute("data-swiper-slide-index"),10):a;h(i,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},z=()=>{const e=t.params.a11y;t.el.append(l);const s=t.el;e.containerRoleDescriptionMessage&&m(s,e.containerRoleDescriptionMessage),e.containerMessage&&h(s,e.containerMessage);const a=t.wrapperEl,r=e.id||a.getAttribute("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,T(a).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(a,o),L();let{nextEl:p,prevEl:c}=t.navigation?t.navigation:{};if(p=T(p),c=T(c),p&&p.forEach((t=>E(t,r,e.nextSlideMessage))),c&&c.forEach((t=>E(t,r,e.prevSlideMessage))),x()){T(t.pagination.el).forEach((e=>{e.addEventListener("keydown",w)}))}i().addEventListener("visibilitychange",C),t.el.addEventListener("focus",P,!0),t.el.addEventListener("focus",P,!0),t.el.addEventListener("pointerdown",S,!0),t.el.addEventListener("pointerup",M,!0)};a("beforeInit",(()=>{l=v("span",t.params.a11y.notificationClass),l.setAttribute("aria-live","assertive"),l.setAttribute("aria-atomic","true")})),a("afterInit",(()=>{t.params.a11y.enabled&&z()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&L()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(f(s),c(s)):(g(s),p(s))),e&&(t.isEnd?(f(e),c(e)):(g(e),p(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;b()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(p(s),t.params.pagination.renderBullet||(u(s,"button"),h(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(ne(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){l&&l.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=T(e),s=T(s),e&&e.forEach((e=>e.removeEventListener("keydown",w))),s&&s.forEach((e=>e.removeEventListener("keydown",w))),x()&&T(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",w)}));i().removeEventListener("visibilitychange",C),t.el&&"string"!=typeof t.el&&(t.el.removeEventListener("focus",P,!0),t.el.removeEventListener("pointerdown",S,!0),t.el.removeEventListener("pointerup",M,!0))}()}))},function(e){let{swiper:t,extendParams:s,on:i}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let a=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const i=s.pathname.slice(1).split("/").filter((e=>""!==e)),a=i.length;return{key:i[a-2],value:i[a-1]}},d=(e,s)=>{const i=r();if(!a||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):i.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${s}"]`):t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const p=i.history.state;p&&p.value===d||(t.params.history.replaceState?i.history.replaceState({value:d},null,d):i.history.pushState({value:d},null,d))},p=(e,s,i)=>{if(s)for(let a=0,r=t.slides.length;a{n=o(t.params.url),p(t.params.speed,n.value,!1)};i("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);a=!0,n=o(t.params.url),n.key||n.value?(p(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",c)):t.params.history.replaceState||e.addEventListener("popstate",c)}})()})),i("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",c)})()})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{a&&d(t.params.history.key,t.activeIndex)})),i("slideChange",(()=>{a&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:a,on:n}=e,l=!1;const o=i(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const p=()=>{a("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},c=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),a("hashSet")):(o.location.hash=s||"",a("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,i=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(i||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",p)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",p)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&c()})),n("slideChange",(()=>{l&&t.params.cssMode&&c()}))},function(e){let t,s,{swiper:a,extendParams:r,on:n,emit:l,params:o}=e;a.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,p,c,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){a&&!a.destroyed&&a.wrapperEl&&e.target===a.wrapperEl&&(a.wrapperEl.removeEventListener("transitionend",y),g||e.detail&&e.detail.bySwiperTouchMove||C())}const x=()=>{if(a.destroyed||!a.autoplay.running)return;a.autoplay.paused?p=!0:p&&(w=d,p=!1);const e=a.autoplay.paused?d:b+w-(new Date).getTime();a.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{x()}))},E=e=>{if(a.destroyed||!a.autoplay.running)return;cancelAnimationFrame(s),x();let i=void 0===e?a.params.autoplay.delay:e;v=a.params.autoplay.delay,w=a.params.autoplay.delay;const r=(()=>{let e;if(e=a.virtual&&a.params.virtual.enabled?a.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:a.slides[a.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(i=r,v=r,w=r),d=i;const n=a.params.speed,o=()=>{a&&!a.destroyed&&(a.params.autoplay.reverseDirection?!a.isBeginning||a.params.loop||a.params.rewind?(a.slidePrev(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(a.slides.length-1,n,!0,!0),l("autoplay")):!a.isEnd||a.params.loop||a.params.rewind?(a.slideNext(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(0,n,!0,!0),l("autoplay")),a.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{E()}))))};return i>0?(clearTimeout(t),t=setTimeout((()=>{o()}),i)):requestAnimationFrame((()=>{o()})),i},S=()=>{b=(new Date).getTime(),a.autoplay.running=!0,E(),l("autoplayStart")},T=()=>{a.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(a.destroyed||!a.autoplay.running)return;clearTimeout(t),e||(f=!0);const i=()=>{l("autoplayPause"),a.params.autoplay.waitForTransition?a.wrapperEl.addEventListener("transitionend",y):C()};if(a.autoplay.paused=!0,s)return h&&(d=a.params.autoplay.delay),h=!1,void i();const r=d||a.params.autoplay.delay;d=r-((new Date).getTime()-b),a.isEnd&&d<0&&!a.params.loop||(d<0&&(d=0),i())},C=()=>{a.isEnd&&d<0&&!a.params.loop||a.destroyed||!a.autoplay.running||(b=(new Date).getTime(),f?(f=!1,E(d)):E(),a.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(a.destroyed||!a.autoplay.running)return;const e=i();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,a.animating||a.autoplay.paused||M(!0))},z=e=>{"mouse"===e.pointerType&&(g=!1,a.autoplay.paused&&C())};n("init",(()=>{a.params.autoplay.enabled&&(a.params.autoplay.pauseOnMouseEnter&&(a.el.addEventListener("pointerenter",L),a.el.addEventListener("pointerleave",z)),i().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{a.el&&"string"!=typeof a.el&&(a.el.removeEventListener("pointerenter",L),a.el.removeEventListener("pointerleave",z)),i().removeEventListener("visibilitychange",P),a.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{a.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!a.destroyed&&a.autoplay.running&&(s||!a.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!a.destroyed&&a.autoplay.running&&(a.params.autoplay.disableOnInteraction?T():(c=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!a.destroyed&&a.autoplay.running&&c){if(clearTimeout(m),clearTimeout(t),a.params.autoplay.disableOnInteraction)return u=!1,void(c=!1);u&&a.params.cssMode&&C(),u=!1,c=!1}})),n("slideChange",(()=>{!a.destroyed&&a.autoplay.running&&(h=!0)})),Object.assign(a.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,i=e.clickedSlide;if(i&&i.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let a;a=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(a):t.slideTo(a)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(p(e.swiper)){const i=Object.assign({},e.swiper);Object.assign(i,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(i),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const i="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let a=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(a=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(a=1),a=Math.floor(a),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>a?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>a&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=i(),a=()=>{const i="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(i&&i.swiper)e.swiper=i.swiper,o(),d(!0);else if(i){const s=`${t.params.eventsPrefix}init`,a=r=>{e.swiper=r.detail[0],i.removeEventListener(s,a),o(),d(!0),e.swiper.update(),t.update()};i.addEventListener(s,a)}return i},r=()=>{if(t.destroyed)return;a()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),a("slideChange update resize observerUpdate",(()=>{d()})),a("setTransition",((e,s)=>{const i=t.thumbs.swiper;i&&!i.destroyed&&i.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:i,once:a}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:p}=t,c=o()-p.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=p.velocities.pop(),s=p.velocities.pop(),i=e.position-s.position,a=e.time-s.time;t.velocity=i/a,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,p.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(ct.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>h&&(c=t.minTranslate()+h),u=t.minTranslate(),m=!0,p.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(d[e]-c){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),i=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&p.allowMomentumBounce&&(i("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(i("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&i("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(i("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,i,a,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{a=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;a&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),i=1,r.emitContainerClasses()):!a&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),a=s})),r.grid={initSlides:e=>{const{slidesPerView:a}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;i=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==a&&"row"===l&&(t=Math.max(t,a*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,a,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:p,fill:c}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===c&&l>1){const s=Math.floor(e/(l*p)),i=e-p*l*s,r=0===s?l:Math.min(Math.ceil((u-s*p*l)/p),l);f=Math.floor(i/r),h=i-f*r+s*l,m=h+f*t/p,a.style.order=m}else"column"===c?(h=Math.floor(e/p),f=e-h*p,(h>i||h===i&&f===p-1)&&(f+=1,f>=p&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);a.row=f,a.column=h,a.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,a.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",a.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:i,roundLengths:a}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),i){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const a=(e,t,s)=>{let i=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(i)),a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(a)),i&&(i.style.opacity=Math.max(-t,0)),a&&(a.style.opacity=Math.max(t,0))};ue({effect:"cube",swiper:t,on:i,setTranslate:()=>{const{el:e,wrapperEl:s,slides:i,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,p=M(t),c=t.params.cubeEffect,u=t.isHorizontal(),m=t.virtual&&t.params.virtual.enabled;let h,f=0;c.shadow&&(u?(h=t.wrapperEl.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),t.wrapperEl.append(h)),h.style.height=`${r}px`):(h=e.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),e.append(h))));for(let e=0;e-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.style.transform=w,c.slideShadows&&a(t,d,u)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,c.shadow)if(u)h.style.transform=`translate3d(0px, ${r/2+c.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,i=c.shadowScale/t,a=c.shadowOffset;h.style.transform=`scale3d(${s}, 1, ${i}) translate3d(0px, ${n/2+a}px, ${-n/2/i}px) rotateX(-89.99deg)`}const g=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${g}px) rotateX(${p(t.isHorizontal()?0:f)}deg) rotateY(${p(t.isHorizontal()?-f:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{el:s,slides:i}=t;if(i.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);a(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const a=(e,s)=>{let i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=fe("flip",e,t.isHorizontal()?"left":"top")),a||(a=fe("flip",e,t.isHorizontal()?"right":"bottom")),i&&(i.style.opacity=Math.max(-s,0)),a&&(a.style.opacity=Math.max(s,0))};ue({effect:"flip",swiper:t,on:i,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,i=t.params.flipEffect,r=M(t);for(let n=0;n{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),a(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),ue({effect:"coverflow",swiper:t,on:i,setTranslate:()=>{const{width:e,height:s,slides:i,slidesSizesGrid:a}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,p=r.depth,c=M(t);for(let e=0,t=i.length;e0?u:0),s&&(s.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;ue({effect:"creative",swiper:t,on:i,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:i}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides,o=M(t);if(l){const e=i[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(g=r.prev,f=!0),m.forEach(((e,t)=>{m[t]=`calc(${e}px + (${a(g.translate[t])} * ${Math.abs(p*n)}))`})),h.forEach(((e,t)=>{let s=g.rotate[t]*Math.abs(p*n);h[t]=s})),i.style.zIndex=-Math.abs(Math.round(d))+e.length;const v=m.join(", "),w=`rotateX(${o(h[0])}deg) rotateY(${o(h[1])}deg) rotateZ(${o(h[2])}deg)`,b=c<0?`scale(${1+(1-g.scale)*c*n})`:`scale(${1-(1-g.scale)*c*n})`,y=c<0?1+(1-g.opacity)*c*n:1-(1-g.opacity)*c*n,x=`translate3d(${v}) ${w} ${b}`;if(f&&g.shadow||!f){let e=i.querySelector(".swiper-slide-shadow");if(!e&&g.shadow&&(e=fe("creative",i)),e){const t=r.shadowPerProgress?p*(1/r.limitProgress):p;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=me(0,i);E.style.transform=x,E.style.opacity=y,g.origin&&(E.style.transformOrigin=g.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),ue({effect:"cards",swiper:t,on:i,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:i}=t,a=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=i?-t.translate:t.translate;for(let o=0;o0&&c<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;v+=-28*c*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(c)+"%"}if(m=c<0?`calc(${m}px ${i?"-":"+"} (${w*Math.abs(c)}%))`:c>0?`calc(${m}px ${i?"-":"+"} (-${w*Math.abs(c)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const E=c<0?""+(1+(1-g)*c):""+(1-(1-g)*c),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${a.rotate?i?-v:v:0}deg)\n scale(${E})\n `;if(a.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=fe("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(p))+e.length;me(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];ae.use(ge);const ve=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function we(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function be(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>s.indexOf(e)<0)).forEach((s=>{void 0===e[s]?e[s]=t[s]:we(t[s])&&we(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:be(e[s],t[s]):e[s]=t[s]}))}function ye(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}const xe=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},Ee=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function Se(e,t,s){const i={},a={};be(i,ee);const r=[...ve,"on"],n=r.map((e=>e.replace(/_/,"")));r.forEach((t=>{t=t.replace("_",""),void 0!==e[t]&&(a[t]=e[t])}));const l=[...e.attributes];return"string"==typeof t&&void 0!==s&&l.push({name:t,value:we(s)?{...s}:s}),l.forEach((e=>{const t=Ee.filter((t=>0===e.name.indexOf(`${t}-`)))[0];if(t){const s=ye(t),i=ye(e.name.split(`${t}-`)[1]);void 0===a[s]&&(a[s]={}),!0===a[s]&&(a[s]={enabled:!0}),a[s][i]=xe(e.value)}else{const t=ye(e.name);if(!n.includes(t))return;const s=xe(e.value);a[t]&&Ee.includes(e.name)&&!we(s)?(a[t].constructor!==Object&&(a[t]={}),a[t].enabled=!!s):a[t]=s}})),be(i,a),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:a}}const Te=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}";const Me="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,Ce='\n ',Pe=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class Le extends Me{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return Ce}static get prevButtonSvg(){return Ce.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[Te,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&Pe(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)}));const t=document.createElement("div");var s;t.classList.add("swiper"),t.part="container",t.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,t)=>`\n \n \n \n `)).join("")}\n
\n \n ${s=this.passedParams,void 0===s&&(s={}),s.navigation&&void 0===s.navigation.nextEl&&void 0===s.navigation.prevEl?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${function(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
\n ':""}\n ${function(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:t,passedParams:s}=Se(this);this.swiperParams=t,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new ae(this.shadowRoot.querySelector(".swiper"),{...t.virtual?{}:{observer:!0},...t,touchEventsTarget:"container",onAny:function(s){"observerUpdate"===s&&e.calcSlideSlots();const i=t.eventsPrefix?`${t.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var a=arguments.length,r=new Array(a>1?a-1:0),n=1;n"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:p,pagination:c,navigation:u,scrollbar:m,virtual:h,thumbs:f}=t;let g,v,w,b,y,x,E,S;a.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&p.thumbs&&!p.thumbs.swiper&&(g=!0),a.includes("controller")&&i.controller&&i.controller.control&&p.controller&&!p.controller.control&&(v=!0),a.includes("pagination")&&i.pagination&&(i.pagination.el||o)&&(p.pagination||!1===p.pagination)&&c&&!c.el&&(w=!0),a.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||l)&&(p.scrollbar||!1===p.scrollbar)&&m&&!m.el&&(b=!0),a.includes("navigation")&&i.navigation&&(i.navigation.prevEl||n)&&(i.navigation.nextEl||r)&&(p.navigation||!1===p.navigation)&&u&&!u.prevEl&&!u.nextEl&&(y=!0);const T=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),p[e].prevEl=void 0,p[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),p[e].el=void 0,t[e].el=void 0))};a.includes("loop")&&t.isElement&&(p.loop&&!i.loop?x=!0:!p.loop&&i.loop?E=!0:S=!0),d.forEach((e=>{if(we(p[e])&&we(i[e]))Object.assign(p[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||T(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?p[e]=i[e]:!1===t&&T(e)}})),d.includes("controller")&&!v&&t.controller&&t.controller.control&&p.controller&&p.controller.control&&(t.controller.control=p.controller.control),a.includes("children")&&s&&h&&p.virtual.enabled?(h.slides=s,h.update(!0)):a.includes("virtual")&&h&&p.virtual.enabled&&(s&&(h.slides=s),h.update(!0)),a.includes("children")&&s&&p.loop&&(S=!0),g&&f.init()&&f.update(!0);v&&(t.controller.control=p.controller.control),w&&(!t.isElement||o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-pagination"),o.part.add("pagination"),t.el.appendChild(o)),o&&(p.pagination.el=o),c.init(),c.render(),c.update()),b&&(!t.isElement||l&&"string"!=typeof l||(l=document.createElement("div"),l.classList.add("swiper-scrollbar"),l.part.add("scrollbar"),t.el.appendChild(l)),l&&(p.scrollbar.el=l),m.init(),m.updateSize(),m.setTranslate()),y&&(t.isElement&&(r&&"string"!=typeof r||(r=document.createElement("div"),r.classList.add("swiper-button-next"),r.innerHTML=t.hostEl.constructor.nextButtonSvg,r.part.add("button-next"),t.el.appendChild(r)),n&&"string"!=typeof n||(n=document.createElement("div"),n.classList.add("swiper-button-prev"),n.innerHTML=t.hostEl.constructor.prevButtonSvg,n.part.add("button-prev"),t.el.appendChild(n))),r&&(p.navigation.nextEl=r),n&&(p.navigation.prevEl=n),u.init(),u.update()),a.includes("allowSlideNext")&&(t.allowSlideNext=i.allowSlideNext),a.includes("allowSlidePrev")&&(t.allowSlidePrev=i.allowSlidePrev),a.includes("direction")&&t.changeDirection(i.direction,!1),(x||S)&&t.loopDestroy(),(E||S)&&t.loopCreate(),t.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[ye(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return ve.filter((e=>e.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}ve.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(Le.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.initialized&&this.updateSwiperOnPropChange(e,t)}}))}));class ze extends Me{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(Pe(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{ve.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",Le),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",ze))}(); +//# sourceMappingURL=swiper-element-bundle.min.js.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-element-bundle.min.js.map b/docs/vendor/swiper-bundle/swiper-element-bundle.min.js.map new file mode 100644 index 0000000..f81c554 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","extend$1","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","support","deviceCached","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","find","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","paramsList","isObject","extend","attrToProp","attrName","l","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","parentObjName","subObjName","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","localStyles","linkEl","needsPagination","needsScrollbar","initialize","_this","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","configurable","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-element-bundle.min.mjs b/docs/vendor/swiper-bundle/swiper-element-bundle.min.mjs new file mode 100644 index 0000000..fef87ae --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import"./swiper-bundle.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";import{S as Swiper}from"./shared/swiper-core.min.mjs";const SwiperCSS=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}",SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,arrowSvg='\n ',addStyle=(e,i)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(i),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=i,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return arrowSvg}static get prevButtonSvg(){return arrowSvg.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,i=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=i.length?Math.max(...i)+1:0,this.rendered)if(this.slideSlots>e)for(let i=e;i=0;i-=1)i>this.slideSlots&&e[i].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const i=document.createElement("link");i.rel="stylesheet",i.href=e,this.shadowRoot.appendChild(i)}));const i=document.createElement("div");i.classList.add("swiper"),i.part="container",i.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,i)=>`\n \n \n \n `)).join("")}\n
\n \n ${needsNavigation(this.passedParams)?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${needsPagination(this.passedParams)?'\n
\n ':""}\n ${needsScrollbar(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(i),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:i,passedParams:t}=getParams(this);this.swiperParams=i,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...i.virtual?{}:{observer:!0},...i,touchEventsTarget:"container",onAny:function(t){"observerUpdate"===t&&e.calcSlideSlots();const s=i.eventsPrefix?`${i.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase();for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;oe.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}paramsList.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(i){this.passedParams||(this.passedParams={}),this.passedParams[e]=i,this.initialized&&this.updateSwiperOnPropChange(e,i)}}))}));class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element-bundle.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-element-bundle.min.mjs.map b/docs/vendor/swiper-bundle/swiper-element-bundle.min.mjs.map new file mode 100644 index 0000000..ef1afa0 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.mjs.mjs","names":["paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","Swiper","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","arrowSvg","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","nextButtonSvg","prevButtonSvg","replace","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","forEach","url","linkEl","href","el","classList","add","part","innerHTML","from","_","index","passedParams","initialize","_this","initialized","params","swiperParams","init","virtual","observer","touchEventsTarget","onAny","name","eventName","eventsPrefix","toLowerCase","_len","arguments","args","_key","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-element-bundle.mjs b/docs/vendor/swiper-bundle/swiper-element-bundle.mjs new file mode 100644 index 0000000..10811c9 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element-bundle.mjs @@ -0,0 +1,286 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import './swiper-bundle.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; +import { S as Swiper } from './shared/swiper-core.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const arrowSvg = ` + `; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/docs/vendor/swiper-bundle/swiper-element.d.ts b/docs/vendor/swiper-bundle/swiper-element.d.ts new file mode 100644 index 0000000..a119a30 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element.d.ts @@ -0,0 +1,444 @@ +// @ts-ignore +import { Swiper, SwiperOptions } from './types/index.d.ts'; + +declare const register: () => void; + +// prettier-ignore +interface SwiperContainerEventMap extends Omit { + /** + * Event will be fired in when autoplay started + */ + autoplaystart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when autoplay stopped + */ + autoplaystop: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay pause + */ + autoplaypause: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay resume + */ + autoplayresume: CustomEvent<[swiper: Swiper]>; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplaytimeleft: CustomEvent<[swiper: Swiper, timeLeft: number, percentage: number]>; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on window hash change + */ + hashchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper updates the hash + */ + hashset: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on key press + */ + keypress: CustomEvent<[swiper: Swiper, keyCode: string]>;/** + * Event will be fired on mousewheel scroll + */ + scroll: CustomEvent<[swiper: Swiper, event: WheelEvent]>;/** + * Event will be fired after pagination rendered + */ + paginationrender: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired when pagination updated + */ + paginationupdate: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired on pagination hide + */ + paginationhide: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on pagination show + */ + paginationshow: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on navigation hide + */ + navigationhide: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation show + */ + navigationshow: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation prev button click + */ + navigationprev: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation next button click + */ + navigationnext: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbardragstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbardragmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbardragend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>;/** + * Event will be fired on zoom change + */ + zoomchange: CustomEvent<[swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement]>; + + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: CustomEvent<[false, + * // other parameters + * }]>; + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: CustomEvent<[{ + * init: function { + * // do something + * }, + * } + * })]>; + * ``` + */ + init: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before Swiper destroyed + */ + beforedestroy: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesupdated: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when currently active slide is changed + */ + slidechange: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slidechangetransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slidechangetransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slidenexttransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slidenexttransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slideprevtransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slideprevtransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of transition. + */ + transitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after transition. + */ + transitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchmoveopposite: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + slidermove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubletap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: CustomEvent<[swiper: Swiper, progress: number]>; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachbeginning: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper reach last slide + */ + reachend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + settranslate: CustomEvent<[swiper: Swiper, translate: number]>; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + settransition: CustomEvent<[swiper: Swiper, transition: number]>; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerupdate: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before "loop fix" + */ + beforeloopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after "loop fix" + */ + loopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: CustomEvent<[swiper: Swiper, breakpointParams: SwiperOptions]>; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + + + /** + * Event will fired on active index change + */ + activeindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on snap index change + */ + snapindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on real index change + */ + realindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right after initialization + */ + afterinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right before initialization + */ + beforeinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before resize handler + */ + beforeresize: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before slide change transition start + */ + beforeslidechangestart: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before transition start + */ + beforetransitionstart: CustomEvent<[swiper: Swiper, speed: number, internal: any]>; // what is internal? + /** + * Event will fired on direction change + */ + changedirection: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleclick: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + /** + * Event will be fired on swiper destroy + */ + destroy: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on momentum bounce + */ + momentumbounce: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideresettransitionstart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideresettransitionend: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired with first touch/drag move + */ + sliderfirstmove: CustomEvent<[swiper: Swiper, event: TouchEvent]>; + /** + * Event will be fired when number of slides has changed + */ + slideslengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when slides grid has changed + */ + slidesgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when snap grid has changed + */ + snapgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired after swiper.update() call + */ + update: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: CustomEvent<[swiper: Swiper]>; + +} + +interface SwiperContainer extends HTMLElement {} +interface SwiperContainer extends SwiperOptions { + swiper: Swiper; + initialize: () => void; + injectStyles: string[]; + injectStylesUrls: string[]; + eventsPrefix: string; + addEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +interface SwiperSlide extends HTMLElement { + lazy: string | boolean; +} + +declare global { + interface HTMLElementTagNameMap { + 'swiper-container': SwiperContainer; + 'swiper-slide': SwiperSlide; + } +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/docs/vendor/swiper-bundle/swiper-element.js b/docs/vendor/swiper-bundle/swiper-element.js new file mode 100644 index 0000000..3af4cc2 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element.js @@ -0,0 +1,4938 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + /* underscore in name -> watch for changes */ + const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const arrowSvg = ` + `; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/docs/vendor/swiper-bundle/swiper-element.min.js b/docs/vendor/swiper-bundle/swiper-element.min.js new file mode 100644 index 0000000..4699bb7 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function h(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function f(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let b,S,T;function y(){return b||(b=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),b}function x(e){return void 0===e&&(e={}),S||(S=function(e){let{userAgent:t}=void 0===e?{}:e;const s=y(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),f="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!f&&(o.os="android",o.android=!0),(p||h||u)&&(o.os="ios",o.ios=!0),o}(e)),S}function E(){return T||(T=function(){const e=n(),t=x();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=i();return{isSafari:s||a,needPerspectiveFix:s,need3dFix:a||r&&t.ios,isWebView:r}}()),T}var C={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const M=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const P=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const k=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},L=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},z=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&L(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&L(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?x=parseFloat(x.replace("%",""))/100*n:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let k;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&f.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-n;f=f.map((e=>e<=0?-b:e>t?t+S:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{f[t]=e-s})),m.forEach(((e,t)=>{m[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:f,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-f[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),f.length!==T&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==y&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],m=u>=0&&u1&&h<=t.size||u<=0&&h>=t.size;m&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e)),M(l,m,s.slideVisibleClass),M(l,f,s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>h(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(a||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{P(e,e===l,s.slideActiveClass),P(e,e===c,s.slideNextClass),P(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&z(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(h?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let b;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),b=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{f[e?"scrollLeft":"scrollTop"]=s}))):f[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,b),0===t?n.transitionEnd(s,b):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,b))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let o=r.params.slidesPerView;"auto"===o?o=r.slidesPerViewDynamic():(o=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&o%2==0&&(o+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),h=n.map((e=>p(e)));let f=n[h.indexOf(u)-1];if(void 0===f&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(f=n[e>0?e-1:e])}let m=0;if(void 0!==f&&(m=a.indexOf(f),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var G={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{h(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):y=n;const x="next"===i||!i,E="prev"===i||!i;let C=0,M=0;const P=b?Math.ceil(d.length/h.grid.rows):d.length,k=(b?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(k=0;t-=1)d[t].column===e&&S.push(t)}else S.push(P-t-1)}}else if(k+v>P-w){M=Math.max(k-(P-2*w),g);for(let e=0;e{e.column===t&&T.push(s)})):T.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&S.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===h.slidesPerView?l.updateSlides():b&&(S.length>0&&E||T.length>0&&x)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),h.watchSlidesProgress&&l.updateSlidesOffset(),s)if(S.length>0&&E){if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y+C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y+Math.ceil(C),0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=b?S.length/h.grid.rows:S.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(T.length>0&&x)if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y-M]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y-M,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=b?T.length/h.grid.rows:T.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===h.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function D(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function N(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void D(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...element.assignedElements()].includes(e);return s}(p,t.wrapperEl))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,h=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&h&&(p=h[0]);const f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(f,p):p.closest(f)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!D(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function V(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,h=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=h);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(ha.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=h;const f=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(f**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(f))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling||"touchmove"===p.type&&r.preventTouchMoveFromPointerMove)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?f:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const b=s.params.loop&&!n.cssMode,S="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(b&&S&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&b&&S&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let T=!0,y=n.resistanceRatio;if(n.touchReleaseOnEdges&&(y=0),v>0?(b&&S&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(T=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**y))):v<0&&(b&&S&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function B(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),h=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),h<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let f;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,f=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:f});const m=f>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&f=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,b=null;n.rewind&&(t.isBeginning?b=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const S=(f-c[v])/g,T=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(S>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+T):t.slideTo(v)),"prev"===t.swipeDirection&&(S>1-n.longSwipesRatio?t.slideTo(v+T):null!==b&&S<0&&Math.abs(S)>n.longSwipesRatio?t.slideTo(b):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+T):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+T),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:v))}}function $(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function F(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function j(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function R(e){const t=this;k(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function H(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const W=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;n&&"string"!=typeof n&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",$,!0):e[c]("observerUpdate",$,!0),n[d]("load",e.onLoad,{capture:!0}))};const q=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var Y={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function X(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const U={eventsEmitter:C,update:I,translate:O,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),_({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),_({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:A,loop:G,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=N.bind(e),e.onTouchMove=V.bind(e),e.onTouchEnd=B.bind(e),e.onDocumentTouchStart=H.bind(e),t.cssMode&&(e.onScroll=j.bind(e)),e.onClick=F.bind(e),e.onLoad=R.bind(e),W(e,"on")},detachEvents:function(){W(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=q(e,i),d=q(e,o),p=e.params.grabCursor,u=o.grabCursor,h=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),p&&!u?e.unsetGrabCursor():!p&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const f=o.direction&&o.direction!==i.direction,m=i.loop&&(o.slidesPerView!==i.slidesPerView||f),v=i.loop;f&&s&&e.changeDirection(),c(e.params,o);const g=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),h&&!g?e.disable():!h&&g&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!v&&w?(e.loopCreate(t),e.updateSlides()):v&&!w&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},K={};class Z{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new Z(i))})),e}const o=this;o.__swiper__=!0,o.support=y(),o.device=x({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:X(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},Y,l);return o.params=c({},d,K,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(h(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?Math.ceil(i[o].swiperSlideSize):0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&k(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return h(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),h(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?k(t,e):e.addEventListener("load",(e=>{k(t,e.target)}))})),z(t),t.initialized=!0,z(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),n&&n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(K,e)}static get extendedDefaults(){return K}static get defaults(){return Y}static installModule(e){Z.prototype.__modules__||(Z.prototype.__modules__=[]);const t=Z.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>Z.installModule(e))),Z):(Z.installModule(e),Z)}}Object.keys(U).forEach((e=>{Object.keys(U[e]).forEach((t=>{Z.prototype[t]=U[e][t]}))})),Z.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]);const J=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function Q(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function ee(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>s.indexOf(e)<0)).forEach((s=>{void 0===e[s]?e[s]=t[s]:Q(t[s])&&Q(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:ee(e[s],t[s]):e[s]=t[s]}))}function te(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}const se=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},ie=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function re(e,t,s){const i={},r={};ee(i,Y);const n=[...J,"on"],a=n.map((e=>e.replace(/_/,"")));n.forEach((t=>{t=t.replace("_",""),void 0!==e[t]&&(r[t]=e[t])}));const o=[...e.attributes];return"string"==typeof t&&void 0!==s&&o.push({name:t,value:Q(s)?{...s}:s}),o.forEach((e=>{const t=ie.filter((t=>0===e.name.indexOf(`${t}-`)))[0];if(t){const s=te(t),i=te(e.name.split(`${t}-`)[1]);void 0===r[s]&&(r[s]={}),!0===r[s]&&(r[s]={enabled:!0}),r[s][i]=se(e.value)}else{const t=te(e.name);if(!a.includes(t))return;const s=se(e.value);r[t]&&ie.includes(e.name)&&!Q(s)?(r[t].constructor!==Object&&(r[t]={}),r[t].enabled=!!s):r[t]=s}})),ee(i,r),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:r}}const ne=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}";const ae="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,oe='\n ',le=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class de extends ae{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return oe}static get prevButtonSvg(){return oe.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[ne,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&le(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)}));const t=document.createElement("div");var s;t.classList.add("swiper"),t.part="container",t.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,t)=>`\n \n \n \n `)).join("")}\n
\n \n ${s=this.passedParams,void 0===s&&(s={}),s.navigation&&void 0===s.navigation.nextEl&&void 0===s.navigation.prevEl?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${function(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
\n ':""}\n ${function(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:t,passedParams:s}=re(this);this.swiperParams=t,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new Z(this.shadowRoot.querySelector(".swiper"),{...t.virtual?{}:{observer:!0},...t,touchEventsTarget:"container",onAny:function(s){"observerUpdate"===s&&e.calcSlideSlots();const i=t.eventsPrefix?`${t.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var r=arguments.length,n=new Array(r>1?r-1:0),a=1;a"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:c,pagination:p,navigation:u,scrollbar:h,virtual:f,thumbs:m}=t;let v,g,w,b,S,T,y,x;r.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(v=!0),r.includes("controller")&&i.controller&&i.controller.control&&c.controller&&!c.controller.control&&(g=!0),r.includes("pagination")&&i.pagination&&(i.pagination.el||l)&&(c.pagination||!1===c.pagination)&&p&&!p.el&&(w=!0),r.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||o)&&(c.scrollbar||!1===c.scrollbar)&&h&&!h.el&&(b=!0),r.includes("navigation")&&i.navigation&&(i.navigation.prevEl||a)&&(i.navigation.nextEl||n)&&(c.navigation||!1===c.navigation)&&u&&!u.prevEl&&!u.nextEl&&(S=!0);const E=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),c[e].prevEl=void 0,c[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),c[e].el=void 0,t[e].el=void 0))};r.includes("loop")&&t.isElement&&(c.loop&&!i.loop?T=!0:!c.loop&&i.loop?y=!0:x=!0),d.forEach((e=>{if(Q(c[e])&&Q(i[e]))Object.assign(c[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||E(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?c[e]=i[e]:!1===t&&E(e)}})),d.includes("controller")&&!g&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),r.includes("children")&&s&&f&&c.virtual.enabled?(f.slides=s,f.update(!0)):r.includes("virtual")&&f&&c.virtual.enabled&&(s&&(f.slides=s),f.update(!0)),r.includes("children")&&s&&c.loop&&(x=!0),v&&m.init()&&m.update(!0);g&&(t.controller.control=c.controller.control),w&&(!t.isElement||l&&"string"!=typeof l||(l=document.createElement("div"),l.classList.add("swiper-pagination"),l.part.add("pagination"),t.el.appendChild(l)),l&&(c.pagination.el=l),p.init(),p.render(),p.update()),b&&(!t.isElement||o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-scrollbar"),o.part.add("scrollbar"),t.el.appendChild(o)),o&&(c.scrollbar.el=o),h.init(),h.updateSize(),h.setTranslate()),S&&(t.isElement&&(n&&"string"!=typeof n||(n=document.createElement("div"),n.classList.add("swiper-button-next"),n.innerHTML=t.hostEl.constructor.nextButtonSvg,n.part.add("button-next"),t.el.appendChild(n)),a&&"string"!=typeof a||(a=document.createElement("div"),a.classList.add("swiper-button-prev"),a.innerHTML=t.hostEl.constructor.prevButtonSvg,a.part.add("button-prev"),t.el.appendChild(a))),n&&(c.navigation.nextEl=n),a&&(c.navigation.prevEl=a),u.init(),u.update()),r.includes("allowSlideNext")&&(t.allowSlideNext=i.allowSlideNext),r.includes("allowSlidePrev")&&(t.allowSlidePrev=i.allowSlidePrev),r.includes("direction")&&t.changeDirection(i.direction,!1),(T||x)&&t.loopDestroy(),(y||x)&&t.loopCreate(),t.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[te(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return J.filter((e=>e.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}J.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(de.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.initialized&&this.updateSwiperOnPropChange(e,t)}}))}));class ce extends ae{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(le(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{J.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",de),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",ce))}(); +//# sourceMappingURL=swiper-element.min.js.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-element.min.js.map b/docs/vendor/swiper-bundle/swiper-element.min.js.map new file mode 100644 index 0000000..e0f34c9 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","extend$1","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","slideEl","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","parent","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parentElement","elementParents","disconnect","paramsList","isObject","extend","attrToProp","attrName","l","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","parentObjName","subObjName","scrollbar","pagination","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","textContent","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","render","localStyles","linkEl","part","innerHTML","needsPagination","needsScrollbar","initialize","_this","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","defineProperty","configurable","get","set","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-element.min.mjs b/docs/vendor/swiper-bundle/swiper-element.min.mjs new file mode 100644 index 0000000..e31aece --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";const SwiperCSS=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}",SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,arrowSvg='\n ',addStyle=(e,s)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(s),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=s,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return arrowSvg}static get prevButtonSvg(){return arrowSvg.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,s=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=s.length?Math.max(...s)+1:0,this.rendered)if(this.slideSlots>e)for(let s=e;s=0;s-=1)s>this.slideSlots&&e[s].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const s=document.createElement("link");s.rel="stylesheet",s.href=e,this.shadowRoot.appendChild(s)}));const s=document.createElement("div");s.classList.add("swiper"),s.part="container",s.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,s)=>`\n \n \n \n `)).join("")}\n
\n \n ${needsNavigation(this.passedParams)?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${needsPagination(this.passedParams)?'\n
\n ':""}\n ${needsScrollbar(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(s),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:s,passedParams:t}=getParams(this);this.swiperParams=s,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...s.virtual?{}:{observer:!0},...s,touchEventsTarget:"container",onAny:function(t){"observerUpdate"===t&&e.calcSlideSlots();const i=s.eventsPrefix?`${s.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase();for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;oe.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}paramsList.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(s){this.passedParams||(this.passedParams={}),this.passedParams[e]=s,this.initialized&&this.updateSwiperOnPropChange(e,s)}}))}));class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-element.min.mjs.map b/docs/vendor/swiper-bundle/swiper-element.min.mjs.map new file mode 100644 index 0000000..41113f3 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.mjs.mjs","names":["Swiper","paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","arrowSvg","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","nextButtonSvg","prevButtonSvg","replace","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","forEach","url","linkEl","href","el","classList","add","part","innerHTML","from","_","index","passedParams","initialize","_this","initialized","params","swiperParams","init","virtual","observer","touchEventsTarget","onAny","name","eventName","eventsPrefix","toLowerCase","_len","arguments","args","_key","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper-element.mjs b/docs/vendor/swiper-bundle/swiper-element.mjs new file mode 100644 index 0000000..8a25a8f --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-element.mjs @@ -0,0 +1,285 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const arrowSvg = ` + `; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/docs/vendor/swiper-bundle/swiper-react.d.ts b/docs/vendor/swiper-bundle/swiper-react.d.ts new file mode 100644 index 0000000..a5d3e60 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-react.d.ts @@ -0,0 +1,501 @@ +import * as React from 'react'; + +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +type SwiperProps = Omit< + React.HTMLAttributes, + | 'onProgress' + | 'onClick' + | 'onTouchEnd' + | 'onTouchMove' + | 'onTouchStart' + | 'onTransitionEnd' + | 'onKeyPress' + | 'onDoubleClick' + | 'onScroll' + | 'onResize' +> & + SwiperOptions & { + /** + * Swiper container tag + * + * @default 'div' + */ + tag?: string; + + /** + * Swiper wrapper tag + * + * @default 'div' + */ + wrapperTag?: string; + + /** + * Get Swiper instance + */ + onSwiper?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in when autoplay started + */ + onAutoplayStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + onAutoplayStop?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + onAutoplayPause?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + onAutoplayResume?: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + onAutoplayTimeLeft?: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + onAutoplay?: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + onHashChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + onHashSet?: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + onKeyPress?: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired on mousewheel scroll + */ + onScroll?: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired after pagination rendered + */ + onPaginationRender?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + onPaginationUpdate?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + onPaginationHide?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + onPaginationShow?: (swiper: SwiperClass) => void;/** + * Event will be fired on navigation hide + */ + onNavigationHide?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + onNavigationShow?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + onNavigationPrev?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + onNavigationNext?: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + onScrollbarDragStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + onScrollbarDragMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + onScrollbarDragEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + onZoomChange?: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + onInit?: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + onBeforeDestroy?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + onSlidesUpdated?: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + onSlideChange?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + onSlideChangeTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + onSlideChangeTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + onSlideNextTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + onSlideNextTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + onSlidePrevTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + onSlidePrevTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + onTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + onTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + onTouchStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + onTouchMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + onTouchMoveOpposite?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + onSliderMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + onTouchEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + onDoubleTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + onProgress?: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + onReachBeginning?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + onReachEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + onToEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + onFromEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + onSetTranslate?: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + onSetTransition?: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + onResize?: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + onObserverUpdate?: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + onBeforeLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + onLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + onBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + onActiveIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + onSnapIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + onRealIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + onAfterInit?: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + onBeforeInit?: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + onBeforeResize?: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + onBeforeSlideChangeStart?: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + onBeforeTransitionStart?: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + onChangeDirection?: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + onDoubleClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + onDestroy?: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + onMomentumBounce?: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + onOrientationchange?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + onSlideResetTransitionStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + onSlideResetTransitionEnd?: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + onSliderFirstMove?: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + onSlidesLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + onSlidesGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + onSnapGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + onUpdate?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + onLock?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + onUnlock?: (swiper: SwiperClass) => void; + + }; + +interface SlideData { + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +} + +type SwiperSlideProps = Omit, 'children'> & { + /** + * Slide tag + * + * @default 'div' + */ + tag?: string; + + /** + * Enables additional wrapper required for zoom mode + * + * @default false + */ + zoom?: boolean; + + /** + * Adds lazy preloader to the slide + * + * @default false + */ + lazy?: boolean; + + /** + * Slide's index in slides array/collection + * + * @default false + */ + virtualIndex?: number; + + /** + * Slide's child element or render function + * + * @default undefined + */ + children?: React.ReactNode | ((slideData: SlideData) => React.ReactNode); +}; + +interface SwiperRef extends React.HTMLAttributes { + swiper: SwiperClass; +} + +declare const Swiper: React.FunctionComponent< + React.RefAttributes & React.PropsWithChildren +>; +declare const SwiperSlide: React.FunctionComponent; + +declare const useSwiper: () => SwiperClass; +declare const useSwiperSlide: () => SlideData; + +export { + Swiper, + SwiperSlide, + SwiperProps, + SwiperSlideProps, + SwiperRef, + useSwiper, + useSwiperSlide, + SwiperClass, +}; diff --git a/docs/vendor/swiper-bundle/swiper-react.mjs b/docs/vendor/swiper-bundle/swiper-react.mjs new file mode 100644 index 0000000..a7c4007 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-react.mjs @@ -0,0 +1,394 @@ +/** + * Swiper React 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs'; +import { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs'; + +function _extends() { + _extends = Object.assign ? Object.assign.bind() : 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 isChildSwiperSlide(child) { + return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide'); +} +function processChildren(c) { + const slides = []; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.children) { + processChildren(child.props.children).forEach(slide => slides.push(slide)); + } + }); + return slides; +} +function getChildren(c) { + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.slot && slots[child.props.slot]) { + slots[child.props.slot].push(child); + } else if (child.props && child.props.children) { + const foundSlides = processChildren(child.props.children); + if (foundSlides.length > 0) { + foundSlides.forEach(slide => slides.push(slide)); + } else { + slots['container-end'].push(child); + } + } else { + slots['container-end'].push(child); + } + }); + return { + slides, + slots + }; +} + +function renderVirtual(swiper, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiper.isHorizontal() ? { + [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiper.params.loop ? -slides.length : 0; + const loopTo = swiper.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper, + style, + key: child.props.virtualIndex || child.key || `slide-${index}` + }); + }); +} + +function useIsomorphicLayoutEffect(callback, deps) { + // eslint-disable-next-line + if (typeof window === 'undefined') return useEffect(callback, deps); + return useLayoutEffect(callback, deps); +} + +const SwiperSlideContext = /*#__PURE__*/createContext(null); +const useSwiperSlide = () => { + return useContext(SwiperSlideContext); +}; +const SwiperContext = /*#__PURE__*/createContext(null); +const useSwiper = () => { + return useContext(SwiperContext); +}; + +const Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) { + let { + className, + tag: Tag = 'div', + wrapperTag: WrapperTag = 'div', + children, + onSwiper, + ...rest + } = _temp === void 0 ? {} : _temp; + let eventsAssigned = false; + const [containerClasses, setContainerClasses] = useState('swiper'); + const [virtualData, setVirtualData] = useState(null); + const [breakpointChanged, setBreakpointChanged] = useState(false); + const initializedRef = useRef(false); + const swiperElRef = useRef(null); + const swiperRef = useRef(null); + const oldPassedParamsRef = useRef(null); + const oldSlides = useRef(null); + const nextElRef = useRef(null); + const prevElRef = useRef(null); + const paginationElRef = useRef(null); + const scrollbarElRef = useRef(null); + const { + params: swiperParams, + passedParams, + rest: restProps, + events + } = getParams(rest); + const { + slides, + slots + } = getChildren(children); + const onBeforeBreakpoint = () => { + setBreakpointChanged(!breakpointChanged); + }; + Object.assign(swiperParams.on, { + _containerClasses(swiper, classes) { + setContainerClasses(classes); + } + }); + const initSwiper = () => { + // init swiper + Object.assign(swiperParams.on, events); + eventsAssigned = true; + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.current = new Swiper$1(passParams); + if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) { + swiperRef.current.virtual.slides = slides; + const extendWith = { + cache: false, + slides, + renderExternal: setVirtualData, + renderExternalUpdate: false + }; + extend(swiperRef.current.params.virtual, extendWith); + extend(swiperRef.current.originalParams.virtual, extendWith); + } + }; + if (!swiperElRef.current) { + initSwiper(); + } + + // Listen for breakpoints change + if (swiperRef.current) { + swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint); + } + const attachEvents = () => { + if (eventsAssigned || !events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.on(eventName, events[eventName]); + }); + }; + const detachEvents = () => { + if (!events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.off(eventName, events[eventName]); + }); + }; + useEffect(() => { + return () => { + if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint); + }; + }); + + // set initialized flag + useEffect(() => { + if (!initializedRef.current && swiperRef.current) { + swiperRef.current.emitSlidesClasses(); + initializedRef.current = true; + } + }); + + // mount swiper + useIsomorphicLayoutEffect(() => { + if (externalElRef) { + externalElRef.current = swiperElRef.current; + } + if (!swiperElRef.current) return; + if (swiperRef.current.destroyed) { + initSwiper(); + } + mountSwiper({ + el: swiperElRef.current, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + paginationEl: paginationElRef.current, + scrollbarEl: scrollbarElRef.current, + swiper: swiperRef.current + }, swiperParams); + if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current); + // eslint-disable-next-line + return () => { + if (swiperRef.current && !swiperRef.current.destroyed) { + swiperRef.current.destroy(true, false); + } + }; + }, []); + + // watch for params change + useIsomorphicLayoutEffect(() => { + attachEvents(); + const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key); + oldPassedParamsRef.current = passedParams; + oldSlides.current = slides; + if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) { + updateSwiper({ + swiper: swiperRef.current, + slides, + passedParams, + changedParams, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + scrollbarEl: scrollbarElRef.current, + paginationEl: paginationElRef.current + }); + } + return () => { + detachEvents(); + }; + }); + + // update on virtual update + useIsomorphicLayoutEffect(() => { + updateOnVirtualData(swiperRef.current); + }, [virtualData]); + + // bypass swiper instance to slides + function renderSlides() { + if (swiperParams.virtual) { + return renderVirtual(swiperRef.current, slides, virtualData); + } + return slides.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper: swiperRef.current, + swiperSlideIndex: index + }); + }); + } + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: swiperElRef, + className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`) + }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, { + value: swiperRef.current + }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, { + className: wrapperClass(swiperParams.wrapperClass) + }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { + ref: prevElRef, + className: "swiper-button-prev" + }), /*#__PURE__*/React.createElement("div", { + ref: nextElRef, + className: "swiper-button-next" + })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: scrollbarElRef, + className: "swiper-scrollbar" + }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: paginationElRef, + className: "swiper-pagination" + }), slots['container-end'])); +}); +Swiper.displayName = 'Swiper'; + +const SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) { + let { + tag: Tag = 'div', + children, + className = '', + swiper, + zoom, + lazy, + virtualIndex, + swiperSlideIndex, + ...rest + } = _temp === void 0 ? {} : _temp; + const slideElRef = useRef(null); + const [slideClasses, setSlideClasses] = useState('swiper-slide'); + const [lazyLoaded, setLazyLoaded] = useState(false); + function updateClasses(_s, el, classNames) { + if (el === slideElRef.current) { + setSlideClasses(classNames); + } + } + useIsomorphicLayoutEffect(() => { + if (typeof swiperSlideIndex !== 'undefined') { + slideElRef.current.swiperSlideIndex = swiperSlideIndex; + } + if (externalRef) { + externalRef.current = slideElRef.current; + } + if (!slideElRef.current || !swiper) { + return; + } + if (swiper.destroyed) { + if (slideClasses !== 'swiper-slide') { + setSlideClasses('swiper-slide'); + } + return; + } + swiper.on('_slideClass', updateClasses); + // eslint-disable-next-line + return () => { + if (!swiper) return; + swiper.off('_slideClass', updateClasses); + }; + }); + useIsomorphicLayoutEffect(() => { + if (swiper && slideElRef.current && !swiper.destroyed) { + setSlideClasses(swiper.getSlideClasses(slideElRef.current)); + } + }, [swiper]); + const slideData = { + isActive: slideClasses.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.indexOf('swiper-slide-next') >= 0 + }; + const renderChildren = () => { + return typeof children === 'function' ? children(slideData) : children; + }; + const onLoad = () => { + setLazyLoaded(true); + }; + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: slideElRef, + className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`), + "data-swiper-slide-index": virtualIndex, + onLoad: onLoad + }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, /*#__PURE__*/React.createElement("div", { + className: "swiper-zoom-container", + "data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader" + }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader" + }))); +}); +SwiperSlide.displayName = 'SwiperSlide'; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/docs/vendor/swiper-bundle/swiper-vars.less b/docs/vendor/swiper-bundle/swiper-vars.less new file mode 100644 index 0000000..a068f6d --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-vars.less @@ -0,0 +1 @@ +@themeColor: #007aff; diff --git a/docs/vendor/swiper-bundle/swiper-vars.scss b/docs/vendor/swiper-bundle/swiper-vars.scss new file mode 100644 index 0000000..819dec4 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-vars.scss @@ -0,0 +1 @@ +$themeColor: #007aff !default; diff --git a/docs/vendor/swiper-bundle/swiper-vue.d.ts b/docs/vendor/swiper-bundle/swiper-vue.d.ts new file mode 100644 index 0000000..ce28455 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-vue.d.ts @@ -0,0 +1,866 @@ +import type { + A11yOptions, + AutoplayOptions, + ControllerOptions, + CoverflowEffectOptions, + CubeEffectOptions, + FadeEffectOptions, + FlipEffectOptions, + CreativeEffectOptions, + CardsEffectOptions, + HashNavigationOptions, + HistoryOptions, + KeyboardOptions, + MousewheelOptions, + NavigationOptions, + PaginationOptions, + ParallaxOptions, + ScrollbarOptions, + ThumbsOptions, + VirtualOptions, + ZoomOptions, + FreeModeOptions, + GridOptions, +} from './types/index.d.ts'; +import { ComponentOptionsMixin, DefineComponent, PropType, Ref } from 'vue'; +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +declare const Swiper: DefineComponent< + { + tag: { + type: StringConstructor; + default: string; + }; + wrapperTag: { + type: StringConstructor; + default: string; + }; + modules: { + type: ArrayConstructor; + default: undefined; + }; + init: { + type: BooleanConstructor; + default: undefined; + }; + direction: { + type: PropType; + default: SwiperOptions['direction']; + }; + oneWayMovement: { + type: PropType; + default: SwiperOptions['oneWayMovement']; + }; + swiperElementNodeName: { + type: PropType; + default: SwiperOptions['swiperElementNodeName']; + }; + touchEventsTarget: { + type: PropType; + default: undefined; + }; + initialSlide: { + type: NumberConstructor; + default: undefined; + }; + speed: { type: NumberConstructor; default: undefined }; + cssMode: { type: BooleanConstructor; default: undefined }; + updateOnWindowResize: { + type: BooleanConstructor; + default: undefined; + }; + resizeObserver: { + type: BooleanConstructor; + default: undefined; + }; + nested: { type: BooleanConstructor; default: undefined }; + focusableElements: { + type: StringConstructor; + default: undefined; + }; + width: { type: NumberConstructor; default: undefined }; + height: { type: NumberConstructor; default: undefined }; + preventInteractionOnTransition: { + type: BooleanConstructor; + default: undefined; + }; + userAgent: { type: StringConstructor; default: undefined }; + url: { type: StringConstructor; default: undefined }; + edgeSwipeDetection: { + type: BooleanConstructor | StringConstructor; + default: undefined; + }; + edgeSwipeThreshold: { + type: NumberConstructor; + default: undefined; + }; + autoHeight: { + type: BooleanConstructor; + default: undefined; + }; + setWrapperSize: { + type: BooleanConstructor; + default: undefined; + }; + virtualTranslate: { + type: BooleanConstructor; + default: undefined; + }; + effect: { + type: PropType; + default: undefined; + }; + breakpoints: { + type: PropType; + default: undefined; + }; + spaceBetween: { + type: PropType; + default: undefined; + }; + slidesPerView: { + type: PropType; + default: undefined; + }; + maxBackfaceHiddenSlides: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroup: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupSkip: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupAuto: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlides: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlidesBounds: { + type: BooleanConstructor; + default: undefined; + }; + slidesOffsetBefore: { + type: NumberConstructor; + default: undefined; + }; + slidesOffsetAfter: { + type: NumberConstructor; + default: undefined; + }; + normalizeSlideIndex: { + type: BooleanConstructor; + default: undefined; + }; + centerInsufficientSlides: { + type: BooleanConstructor; + default: undefined; + }; + watchOverflow: { + type: BooleanConstructor; + default: undefined; + }; + roundLengths: { + type: BooleanConstructor; + default: undefined; + }; + touchRatio: { + type: NumberConstructor; + default: undefined; + }; + touchAngle: { + type: NumberConstructor; + default: undefined; + }; + simulateTouch: { + type: BooleanConstructor; + default: undefined; + }; + shortSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipesRatio: { + type: NumberConstructor; + default: undefined; + }; + longSwipesMs: { + type: NumberConstructor; + default: undefined; + }; + followFinger: { + type: BooleanConstructor; + default: undefined; + }; + allowTouchMove: { + type: BooleanConstructor; + default: undefined; + }; + threshold: { type: NumberConstructor; default: undefined }; + touchMoveStopPropagation: { + type: BooleanConstructor; + default: undefined; + }; + touchStartPreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchStartForcePreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchReleaseOnEdges: { + type: BooleanConstructor; + default: undefined; + }; + uniqueNavElements: { + type: BooleanConstructor; + default: undefined; + }; + resistance: { + type: BooleanConstructor; + default: undefined; + }; + resistanceRatio: { + type: NumberConstructor; + default: undefined; + }; + watchSlidesProgress: { + type: BooleanConstructor; + default: undefined; + }; + grabCursor: { + type: BooleanConstructor; + default: undefined; + }; + preventClicks: { + type: BooleanConstructor; + default: undefined; + }; + preventClicksPropagation: { + type: BooleanConstructor; + default: undefined; + }; + slideToClickedSlide: { + type: BooleanConstructor; + default: undefined; + }; + loop: { type: BooleanConstructor; default: undefined }; + loopAddBlankSlides: { type: BooleanConstructor; default: undefined }; + loopAdditionalSlides: { + type: NumberConstructor; + default: undefined; + }; + loopPreventsSliding: { type: BooleanConstructor; default: undefined }; + rewind: { type: BooleanConstructor; default: undefined }; + allowSlidePrev: { + type: BooleanConstructor; + default: undefined; + }; + allowSlideNext: { + type: BooleanConstructor; + default: undefined; + }; + swipeHandler: { + type: BooleanConstructor; + default: undefined; + }; + noSwiping: { + type: BooleanConstructor; + default: undefined; + }; + noSwipingClass: { + type: StringConstructor; + default: undefined; + }; + noSwipingSelector: { + type: StringConstructor; + default: undefined; + }; + passiveListeners: { + type: BooleanConstructor; + default: undefined; + }; + containerModifierClass: { + type: StringConstructor; + default: undefined; + }; + slideClass: { + type: StringConstructor; + default: undefined; + }; + slideActiveClass: { + type: StringConstructor; + default: undefined; + }; + slideVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideFullyVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideBlankClass: { + type: StringConstructor; + default: undefined; + }; + slideNextClass: { + type: StringConstructor; + default: undefined; + }; + slidePrevClass: { + type: StringConstructor; + default: undefined; + }; + wrapperClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloaderClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloadPrevNext: { + type: NumberConstructor; + default: undefined; + }; + runCallbacksOnInit: { + type: BooleanConstructor; + default: undefined; + }; + observer: { type: BooleanConstructor; default: undefined }; + observeParents: { + type: BooleanConstructor; + default: undefined; + }; + observeSlideChildren: { + type: BooleanConstructor; + default: undefined; + }; + a11y: { + type: PropType; + default: undefined; + }; + autoplay: { + type: PropType; + default: undefined; + }; + controller: { + type: PropType; + default: undefined; + }; + coverflowEffect: { + type: PropType; + default: undefined; + }; + cubeEffect: { + type: PropType; + default: undefined; + }; + fadeEffect: { + type: PropType; + default: undefined; + }; + flipEffect: { + type: PropType; + default: undefined; + }; + creativeEffect: { + type: PropType; + default: undefined; + }; + cardsEffect: { + type: PropType; + default: undefined; + }; + hashNavigation: { + type: PropType; + default: undefined; + }; + history: { + type: PropType; + default: undefined; + }; + keyboard: { + type: PropType; + default: undefined; + }; + mousewheel: { + type: PropType; + default: undefined; + }; + navigation: { + type: PropType; + default: undefined; + }; + pagination: { + type: PropType; + default: undefined; + }; + parallax: { + type: PropType; + default: undefined; + }; + scrollbar: { + type: PropType; + default: undefined; + }; + thumbs: { type: PropType; default: undefined }; + virtual: { + type: PropType; + default: undefined; + }; + zoom: { + type: PropType; + default: undefined; + }; + freeMode: { + type: PropType; + default: undefined; + }; + grid: { + type: PropType; + default: undefined; + }; + }, + () => JSX.Element, + unknown, + {}, + {}, + ComponentOptionsMixin, + ComponentOptionsMixin, + { + swiper: (swiper: SwiperClass) => void; + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + hashChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + keyPress: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: SwiperClass) => void;/** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + zoomChange: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: SwiperClass) => void; + + } +>; + +declare const SwiperSlide: DefineComponent<{ + tag: { + type: StringConstructor; + default: string; + }; + swiperRef: { type: PropType; required: false }; + lazy: { type: BooleanConstructor; default: false }; + zoom: { type: BooleanConstructor; default: undefined }; + virtualIndex: { + type: StringConstructor | NumberConstructor; + default: undefined; + }; +}>; + +declare const useSwiper: () => Ref; +declare const useSwiperSlide: () => Ref<{ + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +}>; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/docs/vendor/swiper-bundle/swiper-vue.mjs b/docs/vendor/swiper-bundle/swiper-vue.mjs new file mode 100644 index 0000000..cf5d478 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper-vue.mjs @@ -0,0 +1,830 @@ +/** + * Swiper Vue 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import { h, ref, onUpdated, provide, watch, nextTick, onMounted, onBeforeUnmount, onBeforeUpdate, computed, inject } from 'vue'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, a as getChangedParams, u as updateOnVirtualData, m as mountSwiper } from './shared/update-on-virtual-data.mjs'; +import { e as extend, u as updateSwiper, d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination } from './shared/update-swiper.mjs'; + +function getChildren(originalSlots, slidesRef, oldSlidesRef) { + if (originalSlots === void 0) { + originalSlots = {}; + } + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + const getSlidesFromElements = (els, slotName) => { + if (!Array.isArray(els)) { + return; + } + els.forEach(vnode => { + const isFragment = typeof vnode.type === 'symbol'; + if (slotName === 'default') slotName = 'container-end'; + if (isFragment && vnode.children) { + getSlidesFromElements(vnode.children, slotName); + } else if (vnode.type && (vnode.type.name === 'SwiperSlide' || vnode.type.name === 'AsyncComponentWrapper') || vnode.componentOptions && vnode.componentOptions.tag === 'SwiperSlide') { + slides.push(vnode); + } else if (slots[slotName]) { + slots[slotName].push(vnode); + } + }); + }; + Object.keys(originalSlots).forEach(slotName => { + if (typeof originalSlots[slotName] !== 'function') return; + const els = originalSlots[slotName](); + getSlidesFromElements(els, slotName); + }); + oldSlidesRef.value = slidesRef.value; + slidesRef.value = slides; + return { + slides, + slots + }; +} + +function renderVirtual(swiperRef, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiperRef.value.isHorizontal() ? { + [swiperRef.value.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiperRef.value.params.loop ? -slides.length : 0; + const loopTo = swiperRef.value.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to && slidesToRender.length < slides.length) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map(slide => { + if (!slide.props) slide.props = {}; + if (!slide.props.style) slide.props.style = {}; + slide.props.swiperRef = swiperRef; + slide.props.style = style; + if (slide.type) { + return h(slide.type, { + ...slide.props + }, slide.children); + } else if (slide.componentOptions) { + return h(slide.componentOptions.Ctor, { + ...slide.props + }, slide.componentOptions.children); + } + }); +} + +const Swiper = { + name: 'Swiper', + props: { + tag: { + type: String, + default: 'div' + }, + wrapperTag: { + type: String, + default: 'div' + }, + modules: { + type: Array, + default: undefined + }, + init: { + type: Boolean, + default: undefined + }, + direction: { + type: String, + default: undefined + }, + oneWayMovement: { + type: Boolean, + default: undefined + }, + swiperElementNodeName: { + type: String, + default: 'SWIPER-CONTAINER' + }, + touchEventsTarget: { + type: String, + default: undefined + }, + initialSlide: { + type: Number, + default: undefined + }, + speed: { + type: Number, + default: undefined + }, + cssMode: { + type: Boolean, + default: undefined + }, + updateOnWindowResize: { + type: Boolean, + default: undefined + }, + resizeObserver: { + type: Boolean, + default: undefined + }, + nested: { + type: Boolean, + default: undefined + }, + focusableElements: { + type: String, + default: undefined + }, + width: { + type: Number, + default: undefined + }, + height: { + type: Number, + default: undefined + }, + preventInteractionOnTransition: { + type: Boolean, + default: undefined + }, + userAgent: { + type: String, + default: undefined + }, + url: { + type: String, + default: undefined + }, + edgeSwipeDetection: { + type: [Boolean, String], + default: undefined + }, + edgeSwipeThreshold: { + type: Number, + default: undefined + }, + autoHeight: { + type: Boolean, + default: undefined + }, + setWrapperSize: { + type: Boolean, + default: undefined + }, + virtualTranslate: { + type: Boolean, + default: undefined + }, + effect: { + type: String, + default: undefined + }, + breakpoints: { + type: Object, + default: undefined + }, + breakpointsBase: { + type: String, + default: undefined + }, + spaceBetween: { + type: [Number, String], + default: undefined + }, + slidesPerView: { + type: [Number, String], + default: undefined + }, + maxBackfaceHiddenSlides: { + type: Number, + default: undefined + }, + slidesPerGroup: { + type: Number, + default: undefined + }, + slidesPerGroupSkip: { + type: Number, + default: undefined + }, + slidesPerGroupAuto: { + type: Boolean, + default: undefined + }, + centeredSlides: { + type: Boolean, + default: undefined + }, + centeredSlidesBounds: { + type: Boolean, + default: undefined + }, + slidesOffsetBefore: { + type: Number, + default: undefined + }, + slidesOffsetAfter: { + type: Number, + default: undefined + }, + normalizeSlideIndex: { + type: Boolean, + default: undefined + }, + centerInsufficientSlides: { + type: Boolean, + default: undefined + }, + watchOverflow: { + type: Boolean, + default: undefined + }, + roundLengths: { + type: Boolean, + default: undefined + }, + touchRatio: { + type: Number, + default: undefined + }, + touchAngle: { + type: Number, + default: undefined + }, + simulateTouch: { + type: Boolean, + default: undefined + }, + shortSwipes: { + type: Boolean, + default: undefined + }, + longSwipes: { + type: Boolean, + default: undefined + }, + longSwipesRatio: { + type: Number, + default: undefined + }, + longSwipesMs: { + type: Number, + default: undefined + }, + followFinger: { + type: Boolean, + default: undefined + }, + allowTouchMove: { + type: Boolean, + default: undefined + }, + threshold: { + type: Number, + default: undefined + }, + touchMoveStopPropagation: { + type: Boolean, + default: undefined + }, + touchStartPreventDefault: { + type: Boolean, + default: undefined + }, + touchStartForcePreventDefault: { + type: Boolean, + default: undefined + }, + touchReleaseOnEdges: { + type: Boolean, + default: undefined + }, + uniqueNavElements: { + type: Boolean, + default: undefined + }, + resistance: { + type: Boolean, + default: undefined + }, + resistanceRatio: { + type: Number, + default: undefined + }, + watchSlidesProgress: { + type: Boolean, + default: undefined + }, + grabCursor: { + type: Boolean, + default: undefined + }, + preventClicks: { + type: Boolean, + default: undefined + }, + preventClicksPropagation: { + type: Boolean, + default: undefined + }, + slideToClickedSlide: { + type: Boolean, + default: undefined + }, + loop: { + type: Boolean, + default: undefined + }, + loopedSlides: { + type: Number, + default: undefined + }, + loopPreventsSliding: { + type: Boolean, + default: undefined + }, + rewind: { + type: Boolean, + default: undefined + }, + allowSlidePrev: { + type: Boolean, + default: undefined + }, + allowSlideNext: { + type: Boolean, + default: undefined + }, + swipeHandler: { + type: Boolean, + default: undefined + }, + noSwiping: { + type: Boolean, + default: undefined + }, + noSwipingClass: { + type: String, + default: undefined + }, + noSwipingSelector: { + type: String, + default: undefined + }, + passiveListeners: { + type: Boolean, + default: undefined + }, + containerModifierClass: { + type: String, + default: undefined + }, + slideClass: { + type: String, + default: undefined + }, + slideActiveClass: { + type: String, + default: undefined + }, + slideVisibleClass: { + type: String, + default: undefined + }, + slideFullyVisibleClass: { + type: String, + default: undefined + }, + slideBlankClass: { + type: String, + default: undefined + }, + slideNextClass: { + type: String, + default: undefined + }, + slidePrevClass: { + type: String, + default: undefined + }, + wrapperClass: { + type: String, + default: undefined + }, + lazyPreloaderClass: { + type: String, + default: undefined + }, + lazyPreloadPrevNext: { + type: Number, + default: undefined + }, + runCallbacksOnInit: { + type: Boolean, + default: undefined + }, + observer: { + type: Boolean, + default: undefined + }, + observeParents: { + type: Boolean, + default: undefined + }, + observeSlideChildren: { + type: Boolean, + default: undefined + }, + a11y: { + type: [Boolean, Object], + default: undefined + }, + autoplay: { + type: [Boolean, Object], + default: undefined + }, + controller: { + type: Object, + default: undefined + }, + coverflowEffect: { + type: Object, + default: undefined + }, + cubeEffect: { + type: Object, + default: undefined + }, + fadeEffect: { + type: Object, + default: undefined + }, + flipEffect: { + type: Object, + default: undefined + }, + creativeEffect: { + type: Object, + default: undefined + }, + cardsEffect: { + type: Object, + default: undefined + }, + hashNavigation: { + type: [Boolean, Object], + default: undefined + }, + history: { + type: [Boolean, Object], + default: undefined + }, + keyboard: { + type: [Boolean, Object], + default: undefined + }, + mousewheel: { + type: [Boolean, Object], + default: undefined + }, + navigation: { + type: [Boolean, Object], + default: undefined + }, + pagination: { + type: [Boolean, Object], + default: undefined + }, + parallax: { + type: [Boolean, Object], + default: undefined + }, + scrollbar: { + type: [Boolean, Object], + default: undefined + }, + thumbs: { + type: Object, + default: undefined + }, + virtual: { + type: [Boolean, Object], + default: undefined + }, + zoom: { + type: [Boolean, Object], + default: undefined + }, + grid: { + type: [Object], + default: undefined + }, + freeMode: { + type: [Boolean, Object], + default: undefined + }, + enabled: { + type: Boolean, + default: undefined + } + }, + emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_slideClasses', '_swiper', '_freeModeNoMomentumRelease', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'autoplayPause', 'autoplayResume', 'autoplayTimeLeft', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'changeDirection', 'click', 'disable', 'doubleTap', 'doubleClick', 'destroy', 'enable', 'fromEdge', 'hashChange', 'hashSet', 'init', 'keyPress', 'lock', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'navigationPrev', 'navigationNext', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', 'slidesUpdated', 'slideChange', 'slideChangeTransitionEnd', 'slideChangeTransitionStart', 'slideNextTransitionEnd', 'slideNextTransitionStart', 'slidePrevTransitionEnd', 'slidePrevTransitionStart', 'slideResetTransitionStart', 'slideResetTransitionEnd', 'sliderMove', 'sliderFirstMove', 'slidesLengthChange', 'slidesGridLengthChange', 'snapGridLengthChange', 'snapIndexChange', 'swiper', 'tap', 'toEdge', 'touchEnd', 'touchMove', 'touchMoveOpposite', 'touchStart', 'transitionEnd', 'transitionStart', 'unlock', 'update', 'virtualUpdate', 'zoomChange'], + setup(props, _ref) { + let { + slots: originalSlots, + emit + } = _ref; + const { + tag: Tag, + wrapperTag: WrapperTag + } = props; + const containerClasses = ref('swiper'); + const virtualData = ref(null); + const breakpointChanged = ref(false); + const initializedRef = ref(false); + const swiperElRef = ref(null); + const swiperRef = ref(null); + const oldPassedParamsRef = ref(null); + const slidesRef = { + value: [] + }; + const oldSlidesRef = { + value: [] + }; + const nextElRef = ref(null); + const prevElRef = ref(null); + const paginationElRef = ref(null); + const scrollbarElRef = ref(null); + const { + params: swiperParams, + passedParams + } = getParams(props, false); + getChildren(originalSlots, slidesRef, oldSlidesRef); + oldPassedParamsRef.value = passedParams; + oldSlidesRef.value = slidesRef.value; + const onBeforeBreakpoint = () => { + getChildren(originalSlots, slidesRef, oldSlidesRef); + breakpointChanged.value = true; + }; + swiperParams.onAny = function (event) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + emit(event, ...args); + }; + Object.assign(swiperParams.on, { + _beforeBreakpoint: onBeforeBreakpoint, + _containerClasses(swiper, classes) { + containerClasses.value = classes; + } + }); + + // init Swiper + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.value = new Swiper$1(passParams); + if (swiperRef.value.virtual && swiperRef.value.params.virtual.enabled) { + swiperRef.value.virtual.slides = slidesRef.value; + const extendWith = { + cache: false, + slides: slidesRef.value, + renderExternal: data => { + virtualData.value = data; + }, + renderExternalUpdate: false + }; + extend(swiperRef.value.params.virtual, extendWith); + extend(swiperRef.value.originalParams.virtual, extendWith); + } + onUpdated(() => { + // set initialized flag + if (!initializedRef.value && swiperRef.value) { + swiperRef.value.emitSlidesClasses(); + initializedRef.value = true; + } + // watch for params change + const { + passedParams: newPassedParams + } = getParams(props, false); + const changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value, c => c.props && c.props.key); + oldPassedParamsRef.value = newPassedParams; + if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) { + updateSwiper({ + swiper: swiperRef.value, + slides: slidesRef.value, + passedParams: newPassedParams, + changedParams, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + scrollbarEl: scrollbarElRef.value, + paginationEl: paginationElRef.value + }); + } + breakpointChanged.value = false; + }); + provide('swiper', swiperRef); + + // update on virtual update + watch(virtualData, () => { + nextTick(() => { + updateOnVirtualData(swiperRef.value); + }); + }); + + // mount swiper + onMounted(() => { + if (!swiperElRef.value) return; + mountSwiper({ + el: swiperElRef.value, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + paginationEl: paginationElRef.value, + scrollbarEl: scrollbarElRef.value, + swiper: swiperRef.value + }, swiperParams); + emit('swiper', swiperRef.value); + }); + onBeforeUnmount(() => { + if (swiperRef.value && !swiperRef.value.destroyed) { + swiperRef.value.destroy(true, false); + } + }); + + // bypass swiper instance to slides + function renderSlides(slides) { + if (swiperParams.virtual) { + return renderVirtual(swiperRef, slides, virtualData.value); + } + slides.forEach((slide, index) => { + if (!slide.props) slide.props = {}; + slide.props.swiperRef = swiperRef; + slide.props.swiperSlideIndex = index; + }); + return slides; + } + return () => { + const { + slides, + slots + } = getChildren(originalSlots, slidesRef, oldSlidesRef); + return h(Tag, { + ref: swiperElRef, + class: uniqueClasses(containerClasses.value) + }, [slots['container-start'], h(WrapperTag, { + class: wrapperClass(swiperParams.wrapperClass) + }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), needsNavigation(props) && [h('div', { + ref: prevElRef, + class: 'swiper-button-prev' + }), h('div', { + ref: nextElRef, + class: 'swiper-button-next' + })], needsScrollbar(props) && h('div', { + ref: scrollbarElRef, + class: 'swiper-scrollbar' + }), needsPagination(props) && h('div', { + ref: paginationElRef, + class: 'swiper-pagination' + }), slots['container-end']]); + }; + } +}; + +const SwiperSlide = { + name: 'SwiperSlide', + props: { + tag: { + type: String, + default: 'div' + }, + swiperRef: { + type: Object, + required: false + }, + swiperSlideIndex: { + type: Number, + default: undefined, + required: false + }, + zoom: { + type: Boolean, + default: undefined, + required: false + }, + lazy: { + type: Boolean, + default: false, + required: false + }, + virtualIndex: { + type: [String, Number], + default: undefined + } + }, + setup(props, _ref) { + let { + slots + } = _ref; + let eventAttached = false; + const { + swiperRef + } = props; + const slideElRef = ref(null); + const slideClasses = ref('swiper-slide'); + const lazyLoaded = ref(false); + function updateClasses(swiper, el, classNames) { + if (el === slideElRef.value) { + slideClasses.value = classNames; + } + } + onMounted(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onBeforeUpdate(() => { + if (eventAttached || !swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onUpdated(() => { + if (!slideElRef.value || !swiperRef || !swiperRef.value) return; + if (typeof props.swiperSlideIndex !== 'undefined') { + slideElRef.value.swiperSlideIndex = props.swiperSlideIndex; + } + if (swiperRef.value.destroyed) { + if (slideClasses.value !== 'swiper-slide') { + slideClasses.value = 'swiper-slide'; + } + } + }); + onBeforeUnmount(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.off('_slideClass', updateClasses); + }); + const slideData = computed(() => ({ + isActive: slideClasses.value.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.value.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.value.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.value.indexOf('swiper-slide-next') >= 0 + })); + provide('swiperSlide', slideData); + const onLoad = () => { + lazyLoaded.value = true; + }; + return () => { + return h(props.tag, { + class: uniqueClasses(`${slideClasses.value}`), + ref: slideElRef, + 'data-swiper-slide-index': typeof props.virtualIndex === 'undefined' && swiperRef && swiperRef.value && swiperRef.value.params.loop ? props.swiperSlideIndex : props.virtualIndex, + onLoadCapture: onLoad + }, props.zoom ? h('div', { + class: 'swiper-zoom-container', + 'data-swiper-zoom': typeof props.zoom === 'number' ? props.zoom : undefined + }, [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader' + })]) : [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader' + })]); + }; + } +}; + +const useSwiperSlide = () => { + return inject('swiperSlide'); +}; +const useSwiper = () => { + return inject('swiper'); +}; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/docs/vendor/swiper-bundle/swiper.css b/docs/vendor/swiper-bundle/swiper.css new file mode 100644 index 0000000..350282c --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper.css @@ -0,0 +1,228 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; +} +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ diff --git a/docs/vendor/swiper-bundle/swiper.d.ts b/docs/vendor/swiper-bundle/swiper.d.ts new file mode 100644 index 0000000..07e4e50 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper.d.ts @@ -0,0 +1,5 @@ +// @ts-ignore +import Swiper from './types/swiper-class.d.ts'; + +export default Swiper; +export { Swiper }; diff --git a/docs/vendor/swiper-bundle/swiper.js b/docs/vendor/swiper-bundle/swiper.js new file mode 100644 index 0000000..4d720b5 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper.js @@ -0,0 +1,4339 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + return Swiper; + +})(); diff --git a/docs/vendor/swiper-bundle/swiper.less b/docs/vendor/swiper-bundle/swiper.less new file mode 100644 index 0000000..8d5c5d3 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper.less @@ -0,0 +1,251 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +@themeColor: #007aff; + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ + +:root { + --swiper-theme-color: @themeColor; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + + + diff --git a/docs/vendor/swiper-bundle/swiper.min.css b/docs/vendor/swiper-bundle/swiper.min.css new file mode 100644 index 0000000..981741c --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper.min.js b/docs/vendor/swiper-bundle/swiper.min.js new file mode 100644 index 0000000..840f4db --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function f(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function h(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let S,T,b;function y(){return S||(S=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),S}function x(e){return void 0===e&&(e={}),T||(T=function(e){let{userAgent:t}=void 0===e?{}:e;const s=y(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),f=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!h&&(o.os="android",o.android=!0),(p||f||u)&&(o.os="ios",o.ios=!0),o}(e)),T}function E(){return b||(b=function(){const e=n(),t=x();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=i();return{isSafari:s||a,needPerspectiveFix:s,need3dFix:a||r&&t.ios,isWebView:r}}()),b}var M={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const C=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const P=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const I=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},L=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},k=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&L(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&L(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?x=parseFloat(x.replace("%",""))/100*n:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let I;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&h.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-n;h=h.map((e=>e<=0?-S:e>t?t+T:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{h[t]=e-s})),m.forEach(((e,t)=>{m[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:h,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-h[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),h.length!==b&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==y&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],m=u>=0&&u1&&f<=t.size||u<=0&&f>=t.size;m&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e)),C(l,m,s.slideVisibleClass),C(l,h,s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>f(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(a||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{P(e,e===l,s.slideActiveClass),P(e,e===c,s.slideNextClass),P(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&k(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(f?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let S;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),S=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,S),0===t?n.transitionEnd(s,S):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,S))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let o=r.params.slidesPerView;"auto"===o?o=r.slidesPerViewDynamic():(o=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&o%2==0&&(o+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),f=n.map((e=>p(e)));let h=n[f.indexOf(u)-1];if(void 0===h&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;if(void 0!==h&&(m=a.indexOf(h),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(f(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(f(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var D={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{f(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(f.slideActiveClass)))[0]):y=n;const x="next"===i||!i,E="prev"===i||!i;let M=0,C=0;const P=S?Math.ceil(d.length/f.grid.rows):d.length,I=(S?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(I=0;t-=1)d[t].column===e&&T.push(t)}else T.push(P-t-1)}}else if(I+v>P-w){C=Math.max(I-(P-2*w),g);for(let e=0;e{e.column===t&&b.push(s)})):b.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&b.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===f.slidesPerView?l.updateSlides():S&&(T.length>0&&E||b.length>0&&x)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),f.watchSlidesProgress&&l.updateSlidesOffset(),s)if(T.length>0&&E){if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y+M]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y+Math.ceil(M),0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=S?T.length/f.grid.rows:T.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(b.length>0&&x)if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y-C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y-C,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=S?b.length/f.grid.rows:b.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===f.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===f.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function _(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function V(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void _(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...element.assignedElements()].includes(e);return s}(p,t.wrapperEl))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,f=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&f&&(p=f[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!_(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const S=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!S||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function N(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,f=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=f);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:f,currentX:u,currentY:f}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(fa.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=f;const h=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(h**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(h))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling||"touchmove"===p.type&&r.preventTouchMoveFromPointerMove)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?h:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const S=s.params.loop&&!n.cssMode,T="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(S&&T&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&S&&T&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:f,currentX:u,currentY:f,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let b=!0,y=n.resistanceRatio;if(n.touchReleaseOnEdges&&(y=0),v>0?(S&&T&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(b=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**y))):v<0&&(S&&T&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function F(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),f=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),f<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const m=h>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&h=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,S=null;n.rewind&&(t.isBeginning?S=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const T=(h-c[v])/g,b=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(T>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+b):t.slideTo(v)),"prev"===t.swipeDirection&&(T>1-n.longSwipesRatio?t.slideTo(v+b):null!==S&&T<0&&Math.abs(T)>n.longSwipesRatio?t.slideTo(S):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+b):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+b),"prev"===t.swipeDirection&&t.slideTo(null!==S?S:v))}}function B(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function $(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function H(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function R(e){const t=this;I(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function j(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const W=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;n&&"string"!=typeof n&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",B,!0):e[c]("observerUpdate",B,!0),n[d]("load",e.onLoad,{capture:!0}))};const Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var q={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function X(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const U={eventsEmitter:M,update:O,translate:A,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),z({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),z({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:G,loop:D,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=V.bind(e),e.onTouchMove=N.bind(e),e.onTouchEnd=F.bind(e),e.onDocumentTouchStart=j.bind(e),t.cssMode&&(e.onScroll=H.bind(e)),e.onClick=$.bind(e),e.onLoad=R.bind(e),W(e,"on")},detachEvents:function(){W(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=Y(e,i),d=Y(e,o),p=e.params.grabCursor,u=o.grabCursor,f=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),p&&!u?e.unsetGrabCursor():!p&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const h=o.direction&&o.direction!==i.direction,m=i.loop&&(o.slidesPerView!==i.slidesPerView||h),v=i.loop;h&&s&&e.changeDirection(),c(e.params,o);const g=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),f&&!g?e.disable():!f&&g&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!v&&w?(e.loopCreate(t),e.updateSlides()):v&&!w&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},K={};class J{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new J(i))})),e}const o=this;o.__swiper__=!0,o.support=y(),o.device=x({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:X(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},q,l);return o.params=c({},d,K,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(f(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?Math.ceil(i[o].swiperSlideSize):0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&I(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return f(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),f(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?I(t,e):e.addEventListener("load",(e=>{I(t,e.target)}))})),k(t),t.initialized=!0,k(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),n&&n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(K,e)}static get extendedDefaults(){return K}static get defaults(){return q}static installModule(e){J.prototype.__modules__||(J.prototype.__modules__=[]);const t=J.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>J.installModule(e))),J):(J.installModule(e),J)}}return Object.keys(U).forEach((e=>{Object.keys(U[e]).forEach((t=>{J.prototype[t]=U[e][t]}))})),J.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]),J}(); +//# sourceMappingURL=swiper.min.js.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper.min.js.map b/docs/vendor/swiper-bundle/swiper.min.js.map new file mode 100644 index 0000000..9926ed3 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","slideEl","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","parent","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parentElement","elementParents","disconnect"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper.min.mjs b/docs/vendor/swiper-bundle/swiper.min.mjs new file mode 100644 index 0000000..ad5831e --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +export{S as Swiper,S as default}from"./shared/swiper-core.min.mjs"; +//# sourceMappingURL=swiper.min.mjs.map \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper.min.mjs.map b/docs/vendor/swiper-bundle/swiper.min.mjs.map new file mode 100644 index 0000000..6938270 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.mjs.mjs","names":["S"],"sources":["0"],"mappings":";;;;;;;;;;;;OAYSA,YAAaA,iBAAoB"} \ No newline at end of file diff --git a/docs/vendor/swiper-bundle/swiper.mjs b/docs/vendor/swiper-bundle/swiper.mjs new file mode 100644 index 0000000..25595d2 --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper.mjs @@ -0,0 +1,13 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +export { S as Swiper, S as default } from './shared/swiper-core.mjs'; diff --git a/docs/vendor/swiper-bundle/swiper.scss b/docs/vendor/swiper-bundle/swiper.scss new file mode 100644 index 0000000..cdef7dd --- /dev/null +++ b/docs/vendor/swiper-bundle/swiper.scss @@ -0,0 +1,252 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +@import 'swiper-vars.scss'; +@at-root { + @font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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') + format('woff'); + font-weight: 400; + font-style: normal; + } +} +@at-root { + :root { + --swiper-theme-color: #{$themeColor}; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ + } +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + + + diff --git a/docs/vendor/swiper-bundle/types/index.d.ts b/docs/vendor/swiper-bundle/types/index.d.ts new file mode 100644 index 0000000..e6e0dc4 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/index.d.ts @@ -0,0 +1,6 @@ +// @ts-nocheck +export * from './shared.d.ts'; +export { default as Swiper } from './swiper-class.d.ts'; +export * from './swiper-events.d.ts'; +export * from './swiper-options.d.ts'; +export * from './modules/public-api.d.ts'; diff --git a/docs/vendor/swiper-bundle/types/modules/a11y.d.ts b/docs/vendor/swiper-bundle/types/modules/a11y.d.ts new file mode 100644 index 0000000..67cb64a --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/a11y.d.ts @@ -0,0 +1,103 @@ +export interface A11yMethods {} + +export interface A11yEvents {} + +export interface A11yOptions { + /** + * Enables A11y + * + * @default true + */ + enabled?: boolean; + + /** + * Message for screen readers for previous button + * + * @default 'Previous slide' + */ + prevSlideMessage?: string; + + /** + * Message for screen readers for next button + * + * @default 'Next slide' + */ + nextSlideMessage?: string; + + /** + * Message for screen readers for previous button when swiper is on first slide + * + * @default 'This is the first slide' + */ + firstSlideMessage?: string; + + /** + * Message for screen readers for next button when swiper is on last slide + * + * @default 'This is the last slide' + */ + lastSlideMessage?: string; + + /** + * Message for screen readers for single pagination bullet + * + * @default 'Go to slide {{index}}' + */ + paginationBulletMessage?: string; + + /** + * CSS class name of A11y notification + * + * @default 'swiper-notification' + */ + notificationClass?: string; + + /** + * Message for screen readers for outer swiper container + * + * @default null + */ + containerMessage?: string | null; + + /** + * Message for screen readers describing the role of outer swiper container + * + * @default null + */ + containerRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the role of slide element + * + * @default null + */ + itemRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the label of slide element + * + * @default '{{index}} / {{slidesLength}}' + */ + slideLabelMessage?: string; + + /** + * Value of swiper slide `role` attribute + * + * @default 'group' + */ + slideRole?: string; + + /** + * Value of `id` attribute to be set on swiper-wrapper. If `null` will be generated automatically + * + * @default null + */ + id?: string | number | null; + + /** + * Enables scrolling to the slide that has been focused + * + * @default true + */ + scrollOnFocus?: boolean; +} diff --git a/docs/vendor/swiper-bundle/types/modules/autoplay.d.ts b/docs/vendor/swiper-bundle/types/modules/autoplay.d.ts new file mode 100644 index 0000000..4c87488 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/autoplay.d.ts @@ -0,0 +1,133 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface AutoplayMethods { + /** + * Whether autoplay enabled and running + */ + running: boolean; + + /** + * Whether autoplay is paused + */ + paused: boolean; + + /** + * If autoplay is paused, it contains time left (in ms) before transition to next slide + */ + timeLeft: number; + + /** + * Pause autoplay + */ + pause(): void; + + /** + * Resume autoplay + */ + resume(): void; + + /** + * Start autoplay + */ + start(): boolean; + + /** + * Stop autoplay + */ + stop(): boolean; +} + +export interface AutoplayEvents { + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: Swiper) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: Swiper) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: Swiper, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: Swiper) => void; +} + +/** + * Object with autoplay parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + * }); + * ``` + */ +export interface AutoplayOptions { + /** + * Delay between transitions (in ms). If this parameter is not specified, auto play will be disabled + * + * If you need to specify different delay for specific slides you can do it by using + * `data-swiper-autoplay` (in ms) attribute on slide. + * + * @example + * ```html + * + *
+ * ``` + * + * @default 3000 + */ + delay?: number; + + /** + * Enable this parameter and autoplay will be stopped when it reaches last slide (has no effect in loop mode) + * + * @default false + */ + stopOnLastSlide?: boolean; + + /** + * Set to `false` and autoplay will not be disabled after user interactions (swipes), + * it will be restarted every time after interaction + * + * @default true + */ + disableOnInteraction?: boolean; + + /** + * Enables autoplay in reverse direction + * + * @default false + */ + reverseDirection?: boolean; + + /** + * When enabled autoplay will wait for wrapper transition to continue. + * Can be disabled in case of using Virtual Translate when your + * slider may not have transition + * + * @default true + */ + waitForTransition?: boolean; + + /** + * When enabled autoplay will be paused on pointer (mouse) enter over Swiper container. + * + * @default false + */ + pauseOnMouseEnter?: boolean; +} diff --git a/docs/vendor/swiper-bundle/types/modules/controller.d.ts b/docs/vendor/swiper-bundle/types/modules/controller.d.ts new file mode 100644 index 0000000..cf61aef --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/controller.d.ts @@ -0,0 +1,35 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ControllerMethods { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper + */ + control?: Swiper | Swiper[]; +} + +export interface ControllerEvents {} + +export interface ControllerOptions { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper. Also accepts string with CSS selector of Swiper element, or HTMLElement of Swiper element + */ + control?: Swiper | Swiper[] | string | HTMLElement | null; + + /** + * Set to `true` and controlling will be in inverse direction + * + * @default false + */ + inverse?: boolean; + + /** + * Defines a way how to control another slider: slide by slide + * (with respect to other slider's grid) or depending on all slides/container + * (depending on total slider percentage). + * + * @default 'slide' + */ + by?: 'slide' | 'container'; +} diff --git a/docs/vendor/swiper-bundle/types/modules/effect-cards.d.ts b/docs/vendor/swiper-bundle/types/modules/effect-cards.d.ts new file mode 100644 index 0000000..9f688a4 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/effect-cards.d.ts @@ -0,0 +1,33 @@ +export interface CardsEffectMethods {} + +export interface CardsEffectEvents {} + +export interface CardsEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + + /** + * Enables cards rotation + * + * @default true + */ + rotate?: boolean; + + /** + * Rotate angle per slide (in degrees) + * + * @default 2 + */ + perSlideRotate?: number; + + /** + * Offset distance per slide (in px) + * + * @default 8 + */ + perSlideOffset?: number; +} diff --git a/docs/vendor/swiper-bundle/types/modules/effect-coverflow.d.ts b/docs/vendor/swiper-bundle/types/modules/effect-coverflow.d.ts new file mode 100644 index 0000000..847201f --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/effect-coverflow.d.ts @@ -0,0 +1,42 @@ +export interface CoverflowEffectMethods {} + +export interface CoverflowEffectEvents {} + +export interface CoverflowEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Slide rotate in degrees + * + * @default 50 + */ + rotate?: number; + /** + * Stretch space between slides (in px) + * + * @default 0 + */ + stretch?: number; + /** + * Depth offset in px (slides translate in Z axis) + * + * @default 100 + */ + depth?: number; + /** + * Slide scale effect + * + * @default 1 + */ + scale?: number; + /** + * Effect multiplier + * + * @default 1 + */ + modifier?: number; +} diff --git a/docs/vendor/swiper-bundle/types/modules/effect-creative.d.ts b/docs/vendor/swiper-bundle/types/modules/effect-creative.d.ts new file mode 100644 index 0000000..eba8987 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/effect-creative.d.ts @@ -0,0 +1,86 @@ +interface CreativeEffectTransform { + translate?: (string | number)[]; + rotate?: number[]; + opacity?: number; + scale?: number; + shadow?: boolean; + origin?: string; +} + +export interface CreativeEffectMethods {} + +export interface CreativeEffectEvents {} + +export interface CreativeEffectOptions { + /** + * Previous slide transformations. Accepts object of the following type: + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + prev?: CreativeEffectTransform; + /** + * Next slide transformations. + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + next?: CreativeEffectTransform; + + /** + * Limit progress/offset to amount of side slides. If `1`, then slides all slides after prev/next will have same state. If `2`, then all slides after 2nd before/after active will have same state, etc. + * + * @default 1 + */ + limitProgress?: number; + /** + * Splits shadow "opacity" per slide based on `limitProgress` (only if transformation shadows enabled). E.g. setting `limitProgress: 2` and enabling `shadowPerProgress`, will set shadow opacity to `0.5` and `1` on two slides next to active. With this parameter disabled, all slides beside active will have shadow with `1` opacity + * + * @default false + */ + shadowPerProgress?: boolean; + /** + * Allows to multiply slides transformations and opacity. + * + * @default 1 + */ + progressMultiplier?: number; + /** + * Enable this parameter if your custom transforms require 3D transformations (`translateZ`, `rotateX`, `rotateY` ) + * + * @default true + */ + perspective?: boolean; +} diff --git a/docs/vendor/swiper-bundle/types/modules/effect-cube.d.ts b/docs/vendor/swiper-bundle/types/modules/effect-cube.d.ts new file mode 100644 index 0000000..c59535c --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/effect-cube.d.ts @@ -0,0 +1,30 @@ +export interface CubeEffectMethods {} + +export interface CubeEffectEvents {} + +export interface CubeEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Enables main slider shadow + * + * @default true + */ + shadow?: boolean; + /** + * Main shadow offset in px + * + * @default 20 + */ + shadowOffset?: number; + /** + * Main shadow scale ratio + * + * @default 0.94 + */ + shadowScale?: number; +} diff --git a/docs/vendor/swiper-bundle/types/modules/effect-fade.d.ts b/docs/vendor/swiper-bundle/types/modules/effect-fade.d.ts new file mode 100644 index 0000000..1d3123c --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/effect-fade.d.ts @@ -0,0 +1,12 @@ +export interface FadeEffectMethods {} + +export interface FadeEffectEvents {} + +export interface FadeEffectOptions { + /** + * Enables slides cross fade + * + * @default false + */ + crossFade?: boolean; +} diff --git a/docs/vendor/swiper-bundle/types/modules/effect-flip.d.ts b/docs/vendor/swiper-bundle/types/modules/effect-flip.d.ts new file mode 100644 index 0000000..aa672c3 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/effect-flip.d.ts @@ -0,0 +1,18 @@ +export interface FlipEffectMethods {} + +export interface FlipEffectEvents {} + +export interface FlipEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Limit edge slides rotation + * + * @default true + */ + limitRotation?: boolean; +} diff --git a/docs/vendor/swiper-bundle/types/modules/free-mode.d.ts b/docs/vendor/swiper-bundle/types/modules/free-mode.d.ts new file mode 100644 index 0000000..9488642 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/free-mode.d.ts @@ -0,0 +1,64 @@ +export interface FreeModeMethods { + onTouchMove(): void; + onTouchEnd(): void; +} + +export interface FreeModeEvents {} + +export interface FreeModeOptions { + /** + * Whether the free mode is enabled + * + * @default false + */ + enabled?: boolean; + + /** + * If enabled, then slide will keep moving for a while after you release it + * + * @default true + */ + momentum?: boolean; + + /** + * Higher value produces larger momentum distance after you release slider + * + * @default 1 + */ + momentumRatio?: number; + + /** + * Higher value produces larger momentum velocity after you release slider + * + * @default 1 + */ + momentumVelocityRatio?: number; + + /** + * Set to `false` if you want to disable momentum bounce in free mode + * + * @default true + */ + momentumBounce?: boolean; + + /** + * Higher value produces larger momentum bounce effect + * + * @default 1 + */ + momentumBounceRatio?: number; + + /** + * Minimum touchmove-velocity required to trigger free mode momentum + * + * @default 0.02 + */ + minimumVelocity?: number; + + /** + * Set to enabled to enable snap to slides positions in free mode + * + * @default false + */ + sticky?: boolean; +} diff --git a/docs/vendor/swiper-bundle/types/modules/grid.d.ts b/docs/vendor/swiper-bundle/types/modules/grid.d.ts new file mode 100644 index 0000000..070b14a --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/grid.d.ts @@ -0,0 +1,21 @@ +export interface GridMethods {} + +export interface GridEvents {} + +export interface GridOptions { + /** + * Number of slides rows, for multirow layout + * + * @default 1 + */ + rows?: number; + + /** + * Can be `'column'` or `'row'`. Defines how slides should fill rows, by column or by row + * + * @note if used with loop mode make sure number of slides is even specified in loop mode requirements, or enable `loopAddBlankSlides` parameter + * + * @default 'column' + */ + fill?: 'row' | 'column'; +} diff --git a/docs/vendor/swiper-bundle/types/modules/hash-navigation.d.ts b/docs/vendor/swiper-bundle/types/modules/hash-navigation.d.ts new file mode 100644 index 0000000..8b6edfe --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/hash-navigation.d.ts @@ -0,0 +1,38 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface HashNavigationMethods {} + +export interface HashNavigationEvents { + /** + * Event will be fired on window hash change + */ + hashChange: (swiper: Swiper) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: Swiper) => void; +} + +export interface HashNavigationOptions { + /** + * Set to `true` to enable also navigation through slides (when hashnav + * is enabled) by browser history or by setting directly hash on document location + * + * @default false + */ + watchState?: boolean; + + /** + * Works in addition to hashnav to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Designed to be used with Virtual slides when it is impossible to find slide in DOM by hash (e.g. not yet rendered) + * + */ + getSlideIndex?: (swiper: Swiper, hash: string) => number; +} diff --git a/docs/vendor/swiper-bundle/types/modules/history.d.ts b/docs/vendor/swiper-bundle/types/modules/history.d.ts new file mode 100644 index 0000000..a3cea81 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/history.d.ts @@ -0,0 +1,43 @@ +export interface HistoryMethods {} + +export interface HistoryEvents {} + +export interface HistoryOptions { + /** + * Enables History Plugin. + * + * @default false + */ + enabled?: boolean; + + /** + * Swiper page root, useful to specify when you use Swiper history mode not on root website page. + * For example can be `https://my-website.com/` or `https://my-website.com/subpage/` or `/subpage/` + * + * + * @default '' + */ + root?: string; + + /** + * Works in addition to hashnav or history to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Url key for slides + * + * @default 'slides' + */ + key?: string; + + /** + * Keep query parameters when changing browser url. + * + * @default false + */ + keepQuery?: boolean; +} diff --git a/docs/vendor/swiper-bundle/types/modules/index.d.ts b/docs/vendor/swiper-bundle/types/modules/index.d.ts new file mode 100644 index 0000000..d0a1b9b --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/index.d.ts @@ -0,0 +1,53 @@ +import type { SwiperModule } from '../shared.d.ts'; + +declare const A11y: SwiperModule; +declare const Autoplay: SwiperModule; +declare const Controller: SwiperModule; +declare const EffectCoverflow: SwiperModule; +declare const EffectCube: SwiperModule; +declare const EffectFade: SwiperModule; +declare const EffectFlip: SwiperModule; +declare const EffectCreative: SwiperModule; +declare const EffectCards: SwiperModule; +declare const HashNavigation: SwiperModule; +declare const History: SwiperModule; +declare const Keyboard: SwiperModule; +declare const Lazy: SwiperModule; +declare const Mousewheel: SwiperModule; +declare const Navigation: SwiperModule; +declare const Pagination: SwiperModule; +declare const Parallax: SwiperModule; +declare const Scrollbar: SwiperModule; +declare const Thumbs: SwiperModule; +declare const Virtual: SwiperModule; +declare const Zoom: SwiperModule; +declare const FreeMode: SwiperModule; +declare const Grid: SwiperModule; +declare const Manipulation: SwiperModule; + +export { + A11y, + Autoplay, + Controller, + EffectCoverflow, + EffectCube, + EffectFade, + EffectFlip, + EffectCreative, + EffectCards, + HashNavigation, + History, + Keyboard, + Lazy, + Mousewheel, + Navigation, + Pagination, + Parallax, + Scrollbar, + Thumbs, + Virtual, + Zoom, + FreeMode, + Grid, + Manipulation, +}; diff --git a/docs/vendor/swiper-bundle/types/modules/keyboard.d.ts b/docs/vendor/swiper-bundle/types/modules/keyboard.d.ts new file mode 100644 index 0000000..d38dd8d --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/keyboard.d.ts @@ -0,0 +1,46 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface KeyboardMethods { + /** + * Whether the keyboard control is enabled + */ + enabled: boolean; + + /** + * Enable keyboard control + */ + enable(): void; + + /** + * Disable keyboard control + */ + disable(): void; +} + +export interface KeyboardEvents { + /** + * Event will be fired on key press + */ + keyPress: (swiper: Swiper, keyCode: string) => void; +} + +export interface KeyboardOptions { + /** + * Set to `true` to enable keyboard control + * + * @default false + */ + enabled?: boolean; + /** + * When enabled it will control sliders that are currently in viewport + * + * @default true + */ + onlyInViewport?: boolean; + /** + * When enabled it will enable keyboard navigation by Page Up and Page Down keys + * + * @default true + */ + pageUpDown?: boolean; +} diff --git a/docs/vendor/swiper-bundle/types/modules/manipulation.d.ts b/docs/vendor/swiper-bundle/types/modules/manipulation.d.ts new file mode 100644 index 0000000..3366eaf --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/manipulation.d.ts @@ -0,0 +1,70 @@ +export interface ManipulationMethods { + /** + * Add new slides to the end. slides could be + * HTMLElement or HTML string with new slide or + * array with such slides, for example: + * + * @example + * ```js + * appendSlide('
Slide 10"
') + * + * appendSlide([ + * '
Slide 10"
', + * '
Slide 11"
' + * ]); + * ``` + */ + appendSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the beginning. slides could be + * HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * prependSlide('
Slide 0"
') + * + * prependSlide([ + * '
Slide 1"
', + * '
Slide 2"
' + * ]); + * ``` + */ + prependSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the required index. slides could be HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * addSlide(1, '
Slide 10"
') + * + * addSlide(1, [ + * '
Slide 10"
', + * '
Slide 11"
' + * ]); + * ``` + */ + addSlide(index: number, slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Remove selected slides. slideIndex could be a number with slide index to remove or array with indexes. + * + * @example + * ```js + * removeSlide(0); // remove first slide + * removeSlide([0, 1]); // remove first and second slides + * removeAllSlides(); // Remove all slides + * ``` + */ + removeSlide(slideIndex: number | number[]): void; + + /** + * Remove all slides + */ + removeAllSlides(): void; +} + +export interface ManipulationEvents {} + +export interface ManipulationOptions {} diff --git a/docs/vendor/swiper-bundle/types/modules/mousewheel.d.ts b/docs/vendor/swiper-bundle/types/modules/mousewheel.d.ts new file mode 100644 index 0000000..4f2bb8f --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/mousewheel.d.ts @@ -0,0 +1,86 @@ +import type Swiper from '../swiper-class.d.ts'; +import type { CSSSelector } from '../shared.d.ts'; + +export interface MousewheelMethods { + /** + * Whether the mousewheel control is enabled + */ + enabled: boolean; + + /** + * Enable mousewheel control + */ + enable(): void; + + /** + * Disable mousewheel control + */ + disable(): void; +} + +export interface MousewheelEvents { + /** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: Swiper, event: WheelEvent) => void; +} + +export interface MousewheelOptions { + /** + * Set to `true` to enable mousewheel control + * + * @default false + */ + enabled?: boolean; + /** + * Set to `true` to force mousewheel swipes to axis. So in horizontal mode mousewheel will work only with horizontal mousewheel scrolling, and only with vertical scrolling in vertical mode. + * + * @default false + */ + forceToAxis?: boolean; + /** + * Set to `true` and swiper will release mousewheel event and allow page scrolling when swiper is on edge positions (in the beginning or in the end) + * + * @default false + */ + releaseOnEdges?: boolean; + /** + * Set to `true` to invert sliding direction + * + * @default false + */ + invert?: boolean; + /** + * Multiplier of mousewheel data, allows to tweak mouse wheel sensitivity + * + * @default 1 + */ + sensitivity?: number; + /** + * String with CSS selector or HTML element of the container accepting mousewheel events. By default it is swiper + * + * @default 'container' + */ + eventsTarget?: 'container' | 'wrapper' | CSSSelector | HTMLElement; + + /** + * Minimum mousewheel scroll delta to trigger swiper slide change + * + * @default null + */ + thresholdDelta?: number | null; + + /** + * Minimum mousewheel scroll time delta (in ms) to trigger swiper slide change + * + * @default null + */ + thresholdTime?: number | null; + + /** + * Scrolling on elements with this class will be ignored + * + * @default 'swiper-no-mousewheel' + */ + noMousewheelClass?: string; +} diff --git a/docs/vendor/swiper-bundle/types/modules/navigation.d.ts b/docs/vendor/swiper-bundle/types/modules/navigation.d.ts new file mode 100644 index 0000000..3d5c6e6 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/navigation.d.ts @@ -0,0 +1,105 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface NavigationMethods { + /** + * HTMLElement of "next" navigation button + */ + nextEl: HTMLElement; + + /** + * HTMLElement of "previous" navigation button + */ + prevEl: HTMLElement; + + /** + * Update navigation buttons state (enabled/disabled) + */ + update(): void; + + /** + * Initialize navigation + */ + init(): void; + + /** + * Destroy navigation + */ + destroy(): void; +} + +export interface NavigationEvents { + /** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: Swiper) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: Swiper) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: Swiper) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: Swiper) => void; +} + +export interface NavigationOptions { + /** + * Boolean property to use with breakpoints to enable/disable navigation on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the element that will work + * like "next" button after click on it + * + * @default null + */ + nextEl?: CSSSelector | HTMLElement | null; + + /** + * String with CSS selector or HTML element of the element that will work + * like "prev" button after click on it + * + * @default null + */ + prevEl?: CSSSelector | HTMLElement | null; + + /** + * Toggle navigation buttons visibility after click on Slider's container + * + * @default false + */ + hideOnClick?: boolean; + + /** + * CSS class name added to navigation button when it becomes disabled + * + * @default 'swiper-button-disabled' + */ + disabledClass?: string; + + /** + * CSS class name added to navigation button when it becomes hidden + * + * @default 'swiper-button-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name added to navigation button when it is disabled + * + * @default 'swiper-button-lock' + */ + lockClass?: string; + + /** + * CSS class name added on swiper container when navigation is disabled by breakpoint + * + * @default 'swiper-navigation-disabled' + */ + navigationDisabledClass?: string; +} diff --git a/docs/vendor/swiper-bundle/types/modules/pagination.d.ts b/docs/vendor/swiper-bundle/types/modules/pagination.d.ts new file mode 100644 index 0000000..5af6341 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/pagination.d.ts @@ -0,0 +1,295 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface PaginationMethods { + /** + * HTMLElement of pagination container element + */ + el: HTMLElement; + + /** + * Array of pagination bullets + * HTML elements. To get specific slide HTMLElement + * use `swiper.pagination.bullets[1]`. + */ + bullets: HTMLElement[]; + + /** + * Render pagination layout + */ + render(): void; + + /** + * Update pagination state (enabled/disabled/active) + */ + update(): void; + + /** + * Initialize pagination + */ + init(): void; + + /** + * Destroy pagination + */ + destroy(): void; +} + +export interface PaginationEvents { + /** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: Swiper) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: Swiper) => void; +} + +export interface PaginationOptions { + /** + * Boolean property to use with breakpoints to enable/disable pagination on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with pagination + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * String with type of pagination. Can be `'bullets'`, `'fraction'`, `'progressbar'` or `'custom'` + * + * @default 'bullets' + */ + type?: 'bullets' | 'fraction' | 'progressbar' | 'custom'; + + /** + * Defines which HTML tag will be used to represent single pagination bullet. Only for `'bullets'` pagination type. + * + * @default 'span' + */ + bulletElement?: string; + + /** + * Good to enable if you use bullets pagination with a lot of slides. So it will keep only few bullets visible at the same time. + * + * @default false + */ + dynamicBullets?: boolean; + + /** + * The number of main bullets visible when `dynamicBullets` enabled. + * + * @default 1 + */ + dynamicMainBullets?: number; + + /** + * Toggle (hide/show) pagination container visibility after click on Slider's container + * + * @default true + */ + hideOnClick?: boolean; + + /** + * If `true` then clicking on pagination button will cause transition to appropriate slide. Only for bullets pagination type + * + * @default false + */ + clickable?: boolean; + + /** + * Makes pagination progressbar opposite to Swiper's `direction` parameter, means vertical progressbar for horizontal swiper + * direction and horizontal progressbar for vertical swiper direction + * + * @default false + */ + progressbarOpposite?: boolean; + + /** + * format fraction pagination current number. Function receives current number, + * and you need to return formatted value + */ + formatFractionCurrent?: (number: number) => number | string; + + /** + * format fraction pagination total number. Function receives total number, and you + * need to return formatted value + */ + formatFractionTotal?: (number: number) => number | string; + + /** + * This parameter allows totally customize pagination bullets, you need to pass here a function that accepts `index` number of + * pagination bullet and required element class name (`className`). Only for `'bullets'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderBullet: function (index, className) { + * return '' + (index + 1) + ''; + * } + * }); + * ``` + */ + renderBullet?: (index: number, className: string) => string; + + /** + * This parameter allows to customize "fraction" pagination html. Only for `'fraction'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderFraction: function (currentClass, totalClass) { + * return '' + + * ' of ' + + * ''; + * } + * }); + * ``` + */ + renderFraction?: (currentClass: string, totalClass: string) => string; + + /** + * This parameter allows to customize "progress" pagination. Only for `'progress'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderProgressbar: function (progressbarFillClass) { + * return ''; + * } + * }); + * ``` + */ + renderProgressbar?: (progressbarFillClass: string) => string; + + /** + * This parameter is required for `'custom'` pagination type where you have to specify + * how it should be rendered. + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderCustom: function (swiper, current, total) { + * return current + ' of ' + total; + * } + * }); + * ``` + */ + renderCustom?: (swiper: Swiper, current: number, total: number) => string; + + /** + * CSS class name of single pagination bullet + * + * @default 'swiper-pagination-bullet' + */ + bulletClass?: string; + + /** + * CSS class name of currently active pagination bullet + * + * @default 'swiper-pagination-bullet-active' + */ + bulletActiveClass?: string; + + /** + * The beginning of the modifier CSS class name that will be added to pagination depending on parameters + * + * @default 'swiper-pagination-' + */ + modifierClass?: string; + + /** + * CSS class name of the element with currently active index in "fraction" pagination + * + * @default 'swiper-pagination-current' + */ + currentClass?: string; + + /** + * CSS class name of the element with total number of "snaps" in "fraction" pagination + * + * @default 'swiper-pagination-total' + */ + totalClass?: string; + + /** + * CSS class name of pagination when it becomes inactive + * + * @default 'swiper-pagination-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name of pagination progressbar fill element + * + * @default 'swiper-pagination-progressbar-fill' + */ + progressbarFillClass?: string; + + /** + * CSS class name of pagination progressbar opposite + * + * @default 'swiper-pagination-progressbar-opposite' + */ + progressbarOppositeClass?: string; + /** + * CSS class name set to pagination when it is clickable + * + * @default 'swiper-pagination-clickable' + */ + clickableClass?: string; + + /** + * CSS class name set to pagination when it is disabled + * + * @default 'swiper-pagination-lock' + */ + lockClass?: string; + + /** + * CSS class name set to pagination in horizontal Swiper + * + * @default 'swiper-pagination-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to pagination in vertical Swiper + * + * @default 'swiper-pagination-vertical' + */ + verticalClass?: string; + + /** + * CSS class name added on swiper container and pagination element when pagination is disabled by breakpoint + * + * @default 'swiper-pagination-disabled' + */ + paginationDisabledClass?: string; +} diff --git a/docs/vendor/swiper-bundle/types/modules/parallax.d.ts b/docs/vendor/swiper-bundle/types/modules/parallax.d.ts new file mode 100644 index 0000000..27e8e6f --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/parallax.d.ts @@ -0,0 +1,12 @@ +export interface ParallaxMethods {} + +export interface ParallaxEvents {} + +export interface ParallaxOptions { + /** + * Enable, if you want to use "parallaxed" elements inside of slider + * + * @default false + */ + enabled?: boolean; +} diff --git a/docs/vendor/swiper-bundle/types/modules/public-api.d.ts b/docs/vendor/swiper-bundle/types/modules/public-api.d.ts new file mode 100644 index 0000000..2553f46 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/public-api.d.ts @@ -0,0 +1,23 @@ +export type * from './a11y.d.ts'; +export type * from './autoplay.d.ts'; +export type * from './controller.d.ts'; +export type * from './effect-coverflow.d.ts'; +export type * from './effect-cube.d.ts'; +export type * from './effect-fade.d.ts'; +export type * from './effect-flip.d.ts'; +export type * from './effect-creative.d.ts'; +export type * from './effect-cards.d.ts'; +export type * from './hash-navigation.d.ts'; +export type * from './history.d.ts'; +export type * from './keyboard.d.ts'; +export type * from './mousewheel.d.ts'; +export type * from './navigation.d.ts'; +export type * from './pagination.d.ts'; +export type * from './parallax.d.ts'; +export type * from './scrollbar.d.ts'; +export type * from './thumbs.d.ts'; +export type * from './virtual.d.ts'; +export type * from './zoom.d.ts'; +export type * from './free-mode.d.ts'; +export type * from './grid.d.ts'; +export type * from './manipulation.d.ts'; diff --git a/docs/vendor/swiper-bundle/types/modules/scrollbar.d.ts b/docs/vendor/swiper-bundle/types/modules/scrollbar.d.ts new file mode 100644 index 0000000..4e04d95 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/scrollbar.d.ts @@ -0,0 +1,140 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface ScrollbarMethods { + /** + * HTMLElement of Scrollbar container element + */ + el: HTMLElement; + + /** + * HTMLElement of Scrollbar draggable handler element + */ + dragEl: HTMLElement; + + /** + * Updates scrollbar track and handler sizes + */ + updateSize(): void; + + /** + * Updates scrollbar translate + */ + setTranslate(): void; + + /** + * Initialize scrollbar + */ + init(): void; + + /** + * Destroy scrollbar + */ + destroy(): void; +} + +export interface ScrollbarEvents { + /** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; +} + +/** + * Object with scrollbar parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ +export interface ScrollbarOptions { + /** + * Boolean property to use with breakpoints to enable/disable scrollbar on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with scrollbar. + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * Hide scrollbar automatically after user interaction + * + * @default true + */ + hide?: boolean; + + /** + * Set to `true` to enable make scrollbar draggable that allows you to control slider position + * + * @default false + */ + draggable?: boolean; + + /** + * Set to `true` to snap slider position to slides when you release scrollbar + * + * @default false + */ + snapOnRelease?: boolean; + + /** + * Size of scrollbar draggable element in px + * + * @default 'auto' + */ + dragSize?: 'auto' | number; + + /** + * Scrollbar element additional CSS class when it is disabled + * + * @default 'swiper-scrollbar-lock' + */ + lockClass?: string; + + /** + * Scrollbar draggable element CSS class + * + * @default 'swiper-scrollbar-drag' + */ + dragClass?: string; + + /** + * CSS class name added on swiper container and scrollbar element when scrollbar is disabled by breakpoint + * + * @default 'swiper-scrollbar-disabled' + */ + scrollbarDisabledClass?: string; + + /** + * CSS class name set to scrollbar in horizontal Swiper + * + * @default 'swiper-scrollbar-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to scrollbar in vertical Swiper + * + * @default 'swiper-scrollbar-vertical' + */ + verticalClass?: string; +} diff --git a/docs/vendor/swiper-bundle/types/modules/thumbs.d.ts b/docs/vendor/swiper-bundle/types/modules/thumbs.d.ts new file mode 100644 index 0000000..51b2625 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/thumbs.d.ts @@ -0,0 +1,54 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ThumbsMethods { + /** + * Swiper instance of thumbs swiper + */ + swiper: Swiper; + + /** + * Update thumbs + */ + update(initial: boolean): void; + + /** + * Initialize thumbs + */ + init(): boolean; +} + +export interface ThumbsEvents {} + +export interface ThumbsOptions { + /** + * Swiper instance of swiper used as thumbs or object with Swiper parameters to initialize thumbs swiper + * + * @default null + */ + swiper?: Swiper | string | null; + /** + * Additional class that will be added to activated thumbs swiper slide + * + * @default 'swiper-slide-thumb-active' + */ + slideThumbActiveClass?: string; + /** + * Additional class that will be added to thumbs swiper + * + * @default 'swiper-thumbs' + */ + thumbsContainerClass?: string; + /** + * When enabled multiple thumbnail slides may get activated + * + * @default true + */ + multipleActiveThumbs?: boolean; + /** + * Allows to set on which thumbs active slide from edge it should automatically move scroll thumbs. For example, if set to 1 and last visible thumb will be activated (1 from edge) it will auto scroll thumbs + + * + * @default 0 + */ + autoScrollOffset?: number; +} diff --git a/docs/vendor/swiper-bundle/types/modules/virtual.d.ts b/docs/vendor/swiper-bundle/types/modules/virtual.d.ts new file mode 100644 index 0000000..bcf27bd --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/virtual.d.ts @@ -0,0 +1,135 @@ +export interface VirtualMethods { + /** + * Object with cached slides HTML elements + */ + cache: object; + + /** + * Index of first rendered slide + */ + from: number; + + /** + * Index of last rendered slide + */ + to: number; + + /** + * Array with slide items passed by `virtual.slides` parameter + */ + slides: T[]; + + /* + * Methods + */ + + /** + * Append slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + appendSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Prepend slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + prependSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Remove specific slide or slides. `slideIndexes` can be a number with slide index to remove or array with indexes. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeSlide(slideIndexes: number[]): void; + + /** + * Remove all slides + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeAllSlides(): void; + + /** + * Update virtual slides state + */ + update(force: boolean): void; +} + +export interface VirtualEvents {} + +export interface VirtualData { + /** + * slides left/top offset in px + */ + offset: number; + /** + * index of first slide required to be rendered + */ + from: number; + /** + * index of last slide required to be rendered + */ + to: number; + /** + * array with slide items to be rendered + */ + slides: T[]; +} + +export interface VirtualOptions { + /** + * Whether the virtual slides are enabled + * + * @default false + */ + enabled?: boolean; + /** + * Array with slides + * + * @default [] + */ + slides?: T[]; + /** + * Enables DOM cache of rendering slides html elements. Once they are rendered they will be saved to cache and reused from it. + * + * @default true + */ + cache?: boolean; + /** + * Increases amount of pre-rendered slides before active slide + * + * @default 0 + */ + addSlidesBefore?: number; + /** + * Increases amount of pre-rendered slides after active slide + * + * @default 0 + */ + addSlidesAfter?: number; + /** + * Function to render slide. As an argument it accepts current slide item for `slides` array and index number of the current slide. Function must return an outer HTML of the swiper slide or slide HTML element. + * + * @default null + */ + renderSlide?: (slide: T, index: any) => any | null; + /** + * Function for external rendering (e.g. using some other library to handle DOM manipulations and state like React.js or Vue.js). As an argument it accepts `data` object with the following properties: + * + * - `offset` - slides left/top offset in px + * - `from` - index of first slide required to be rendered + * - `to` - index of last slide required to be rendered + * - `slides` - array with slide items to be rendered + * + * @default null + */ + renderExternal?: (data: VirtualData) => any | null; + /** + * When enabled (by default) it will update Swiper layout right after renderExternal called. Useful to disable and update swiper manually when used with render libraries that renders asynchronously + * + * @default true + */ + renderExternalUpdate?: boolean; +} diff --git a/docs/vendor/swiper-bundle/types/modules/zoom.d.ts b/docs/vendor/swiper-bundle/types/modules/zoom.d.ts new file mode 100644 index 0000000..658f5ba --- /dev/null +++ b/docs/vendor/swiper-bundle/types/modules/zoom.d.ts @@ -0,0 +1,85 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ZoomMethods { + /** + * Whether the zoom module is enabled + */ + enabled: boolean; + + /** + * Current image scale ratio + */ + scale: number; + + /** + * Enable zoom module + */ + enable(): void; + + /** + * Disable zoom module + */ + disable(): void; + + /** + * Zoom in image of the currently active slide. Optionally accepts custom zoom ratio + */ + in(ratio?: number): void; + + /** + * Zoom out image of the currently active slide + */ + out(): void; + + /** + * Toggle image zoom of the currently active slide + */ + toggle(event?: MouseEvent | TouchEvent | PointerEvent): void; +} + +export interface ZoomEvents { + /** + * Event will be fired on zoom change + */ + zoomChange: (swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; +} + +export interface ZoomOptions { + /** + * When set to true, the image will not be scaled past 100% of its original size + * + * @default false + */ + limitToOriginalSize?: boolean; + /** + * Maximum image zoom multiplier + * + * @default 3 + */ + maxRatio?: number; + /** + * Minimal image zoom multiplier + * + * @default 1 + */ + minRatio?: number; + /** + * Enable/disable zoom-in by slide's double tap + * + * @default true + */ + toggle?: boolean; + /** + * CSS class name of zoom container + * + * @default 'swiper-zoom-container' + */ + containerClass?: string; + /** + * CSS class name of zoomed in container + * + * @default 'swiper-slide-zoomed' + + */ + zoomedSlideClass?: string; +} diff --git a/docs/vendor/swiper-bundle/types/shared.d.ts b/docs/vendor/swiper-bundle/types/shared.d.ts new file mode 100644 index 0000000..3e410c5 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/shared.d.ts @@ -0,0 +1,13 @@ +import type { Swiper } from './index.d.ts'; + +export interface CSSSelector extends String {} + +export type SwiperModule = (options: { + params: Swiper['params']; + swiper: Swiper; + extendParams: (obj: { [name: string]: any }) => void; + on: Swiper['on']; + once: Swiper['once']; + off: Swiper['off']; + emit: Swiper['emit']; +}) => void; diff --git a/docs/vendor/swiper-bundle/types/swiper-class.d.ts b/docs/vendor/swiper-bundle/types/swiper-class.d.ts new file mode 100644 index 0000000..213916d --- /dev/null +++ b/docs/vendor/swiper-bundle/types/swiper-class.d.ts @@ -0,0 +1,492 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +import type { A11yMethods } from './modules/a11y.d.ts'; +import type { AutoplayMethods } from './modules/autoplay.d.ts'; +import type { ControllerMethods } from './modules/controller.d.ts'; +import type { CoverflowEffectMethods } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectMethods } from './modules/effect-cube.d.ts'; +import type { FadeEffectMethods } from './modules/effect-fade.d.ts'; +import type { FlipEffectMethods } from './modules/effect-flip.d.ts'; +import type { CreativeEffectMethods } from './modules/effect-creative.d.ts'; +import type { CardsEffectMethods } from './modules/effect-cards.d.ts'; +import type { HashNavigationMethods } from './modules/hash-navigation.d.ts'; +import type { HistoryMethods } from './modules/history.d.ts'; +import type { KeyboardMethods } from './modules/keyboard.d.ts'; +import type { MousewheelMethods } from './modules/mousewheel.d.ts'; +import type { NavigationMethods } from './modules/navigation.d.ts'; +import type { PaginationMethods } from './modules/pagination.d.ts'; +import type { ParallaxMethods } from './modules/parallax.d.ts'; +import type { ScrollbarMethods } from './modules/scrollbar.d.ts'; +import type { ThumbsMethods } from './modules/thumbs.d.ts'; +import type { VirtualMethods } from './modules/virtual.d.ts'; +import type { ZoomMethods } from './modules/zoom.d.ts'; +import type { FreeModeMethods } from './modules/free-mode.d.ts'; +import type { ManipulationMethods } from './modules/manipulation.d.ts'; + +interface SwiperClass { + /** Add event handler */ + on(event: E, handler: Events[E]): void; + /** Add event handler that will be removed after it was fired */ + once(event: E, handler: Events[E]): void; + /** Remove event handler */ + off(event: E, handler: Events[E]): void; + /** Remove all handlers for specified event */ + off(event: E): void; + /** Fire event on instance */ + emit(event: E, ...args: any[]): void; +} + +interface Swiper extends SwiperClass { + /** + * Object with passed initialization parameters + */ + params: SwiperOptions; + + /** + * Object with original initialization parameters + */ + originalParams: SwiperOptions; + + /** + * Slider container HTML element + */ + el: HTMLElement; + + /** + * Wrapper HTML element + */ + wrapperEl: HTMLElement; + + /** + * Array of slides HTML elements. To get specific slide HTMLElement use `swiper.slides[1]` + */ + slides: HTMLElement[]; + + /** + * !INTERNAL + */ + loopedSlides: number | null; + + /** + * Width of container + */ + width: number; + + /** + * Height of container + */ + height: number; + + /** + * Current value of wrapper translate + */ + translate: number; + + /** + * Current progress of wrapper translate (from 0 to 1) + */ + progress: number; + + /** + * Index number of currently active slide + * + * @note Note, that in loop mode active index value will be always shifted on a number of looped slides + */ + activeIndex: number; + + /** + * Index number of currently active slide considering rearranged slides in loop mode + */ + realIndex: number; + + /** + * Index number of previously active slide + */ + previousIndex: number; + + /** + * Index number of current snap in `snapGrid` + */ + snapIndex: number; + + /** + * Slides snap grid + */ + snapGrid: number[]; + + /** + * `true` if slider on most "left"/"top" position + */ + isBeginning: boolean; + + /** + * `true` if slider on most "right"/"bottom" position + */ + isEnd: boolean; + + /** + * `true` if slide is "locked" (by `watchOverflow`) and slides can not be, e.g. when amount of slides is less that slides per view + */ + isLocked: boolean; + + /** + * `true` if swiper is in transition + */ + animating: boolean; + + /** + * Object with the following touch event properties: + * + * - `swiper.touches.startX` + * - `swiper.touches.startY` + * - `swiper.touches.currentX` + * - `swiper.touches.currentY` + * - `swiper.touches.diff` + */ + touches: { + startX: number; + startY: number; + currentX: number; + currentY: number; + diff: number; + }; + + /** + * Index number of last clicked slide + */ + clickedIndex: number; + + /** + * Link to last clicked slide (HTMLElement) + */ + clickedSlide: HTMLElement; + + /** + * Disable / enable ability to slide to the next slides by assigning `false` / `true` to this property + */ + allowSlideNext: boolean; + + /** + * Disable / enable ability to slide to the previous slides by assigning `false` / `true` to this property + */ + allowSlidePrev: boolean; + + /** + * Disable / enable ability move slider by grabbing it with mouse or by touching it with finger (on touch screens) by assigning `false` / `true` to this property + */ + allowTouchMove: boolean; + + /** + * Direction of sliding + */ + swipeDirection: 'prev' | 'next'; + + /** + * !INTERNAL + */ + rtlTranslate: boolean; + + /** + * Disable Swiper (if it was enabled). When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + */ + disable(): void; + + /** + * Enable Swiper (if it was disabled) + * + */ + enable(): void; + + /** + * Set Swiper translate progress (from 0 to 1). Where 0 - its initial position (offset) on first slide, and 1 - its maximum position (offset) on last slide + * + * @param progress Swiper translate progress (from 0 to 1). + * @param speed Transition duration (in ms). + */ + setProgress(progress: number, speed?: number): void; + + /** + * Run transition to next slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideNext(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Run transition to previous slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slidePrev(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Run transition to the slide with index number equal to 'index' parameter for the + * duration equal to 'speed' parameter. + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideTo(index: number, speed?: number, runCallbacks?: boolean): boolean; + + /** + * Does the same as .slideTo but for the case when used with enabled loop. So this + * method will slide to slides with realIndex matching to passed index + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToLoop(index: number, speed?: number, runCallbacks?: boolean): Swiper; + + /** + * Reset swiper position to currently active slide for the duration equal to 'speed' + * parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideReset(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Reset swiper position to closest slide/snap point for the duration equal to 'speed' parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToClosest(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Get dynamically calculated amount of slides per view, useful only when slidesPerView set to `auto` + * + */ + slidesPerViewDynamic(): number; + + /** + * Force swiper to update its height (when autoHeight enabled) for the duration equal to + * 'speed' parameter + * + * @param speed Transition duration (in ms). + */ + updateAutoHeight(speed?: number): void; + + /** + * You should call it after you add/remove slides + * manually, or after you hide/show it, or do any + * custom DOM modifications with Swiper + * This method also includes subcall of the following + * methods which you can use separately: + */ + update(): void; + + /** + * recalculate size of swiper container + */ + updateSize(): void; + + /** + * recalculate number of slides and their offsets. Useful after you add/remove slides with JavaScript + */ + updateSlides(): void; + + /** + * recalculate swiper progress + */ + updateProgress(): void; + + /** + * update active/prev/next classes on slides and bullets + */ + updateSlidesClasses(): void; + + /** + * Changes slider direction from horizontal to vertical and back. + * + * @param direction New direction. If not specified, then will automatically changed to opposite direction + * @param needUpdate Will call swiper.update(). Default true + */ + changeDirection(direction?: 'horizontal' | 'vertical', needUpdate?: boolean): void; + + /** + * Changes slider language + * + * @param direction New direction. Should be `rtl` or `ltr` + */ + changeLanguageDirection(direction: 'rtl' | 'ltr'): void; + + /** + * Detach all events listeners + */ + detachEvents(): void; + + /** + * Attach all events listeners again + */ + attachEvents(): void; + + /** + * !INTERNAL + */ + loopCreate(): void; + + /** + * !INTERNAL + */ + loopDestroy(): void; + + /** + * Initialize slider + */ + init(el?: HTMLElement): Swiper; + + /** + * Destroy slider instance and detach all events listeners + * + * @param deleteInstance Set it to false (by default it is true) to not to delete Swiper instance + * @param cleanStyles Set it to true (by default it is true) and all custom styles will be removed from slides, wrapper and container. + * Useful if you need to destroy Swiper and to init again with new options or in different direction + */ + destroy(deleteInstance?: boolean, cleanStyles?: boolean): void; + + /** + * Set custom css3 transform's translate value for swiper wrapper + */ + setTranslate(translate: any): void; + + /** + * Get current value of swiper wrapper css3 transform translate + */ + getTranslate(): any; + + /** + * Animate custom css3 transform's translate value for swiper wrapper + * + * @param translate Translate value (in px) + * @param speed Transition duration (in ms) + * @param runCallbacks Set it to false (by default it is true) and transition will not produce transition events + * @param translateBounds Set it to false (by default it is true) and transition value can extend beyond min and max translate + * + */ + translateTo( + translate: number, + speed: number, + runCallbacks?: boolean, + translateBounds?: boolean, + ): any; + + /** + * Unset grab cursor + */ + unsetGrabCursor(): void; + + /** + * Set grab cursor + */ + setGrabCursor(): void; + + /** + * Add event listener that will be fired on all events + */ + onAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * Remove event listener that will be fired on all events + */ + offAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * !INTERNAL + */ + isHorizontal(): boolean; + + /** + * !INTERNAL + */ + getBreakpoint(breakpoints: SwiperOptions['breakpoints']): string; + + /** + * !INTERNAL + */ + setBreakpoint(): void; + + /** + * !INTERNAL + */ + currentBreakpoint: any; + + /** + * !INTERNAL + */ + destroyed: boolean; + + /** + * !INTERNAL + */ + modules: Array; + + a11y: A11yMethods; + autoplay: AutoplayMethods; + controller: ControllerMethods; + coverflowEffect: CoverflowEffectMethods; + cubeEffect: CubeEffectMethods; + fadeEffect: FadeEffectMethods; + flipEffect: FlipEffectMethods; + creativeEffect: CreativeEffectMethods; + cardsEffect: CardsEffectMethods; + hashNavigation: HashNavigationMethods; + history: HistoryMethods; + keyboard: KeyboardMethods; + mousewheel: MousewheelMethods; + navigation: NavigationMethods; + pagination: PaginationMethods; + parallax: ParallaxMethods; + scrollbar: ScrollbarMethods; + thumbs: ThumbsMethods; + virtual: VirtualMethods; + zoom: ZoomMethods; + freeMode: FreeModeMethods; +} + +interface Swiper extends ManipulationMethods {} + +declare class Swiper implements Swiper { + /** + * Constructs a new Swiper instance. + * + * @param container Where Swiper applies to. + * @param options Instance options. + */ + constructor(container: CSSSelector | HTMLElement, options?: SwiperOptions); + /** + * Installs modules on Swiper in runtime. + */ + static use(modules: SwiperModule[]): void; + + /** + * Swiper default options + */ + static defaults: SwiperOptions; + + /** + * Extend global Swiper defaults + */ + static extendDefaults(options: SwiperOptions): void; + + /** + * Object with global Swiper extended options + */ + static extendedDefaults: SwiperOptions; +} + +export default Swiper; diff --git a/docs/vendor/swiper-bundle/types/swiper-events.d.ts b/docs/vendor/swiper-bundle/types/swiper-events.d.ts new file mode 100644 index 0000000..4e6aaec --- /dev/null +++ b/docs/vendor/swiper-bundle/types/swiper-events.d.ts @@ -0,0 +1,359 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type Swiper from './swiper-class.d.ts'; + +import type { A11yEvents } from './modules/a11y.d.ts'; +import type { AutoplayEvents } from './modules/autoplay.d.ts'; +import type { ControllerEvents } from './modules/controller.d.ts'; +import type { CoverflowEffectEvents } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectEvents } from './modules/effect-cube.d.ts'; +import type { FadeEffectEvents } from './modules/effect-fade.d.ts'; +import type { FlipEffectEvents } from './modules/effect-flip.d.ts'; +import type { CreativeEffectEvents } from './modules/effect-creative.d.ts'; +import type { CardsEffectEvents } from './modules/effect-cards.d.ts'; +import type { HashNavigationEvents } from './modules/hash-navigation.d.ts'; +import type { HistoryEvents } from './modules/history.d.ts'; +import type { KeyboardEvents } from './modules/keyboard.d.ts'; +import type { MousewheelEvents } from './modules/mousewheel.d.ts'; +import type { NavigationEvents } from './modules/navigation.d.ts'; +import type { PaginationEvents } from './modules/pagination.d.ts'; +import type { ParallaxEvents } from './modules/parallax.d.ts'; +import type { ScrollbarEvents } from './modules/scrollbar.d.ts'; +import type { ThumbsEvents } from './modules/thumbs.d.ts'; +import type { VirtualEvents } from './modules/virtual.d.ts'; +import type { ZoomEvents } from './modules/zoom.d.ts'; +import type { FreeModeEvents } from './modules/free-mode.d.ts'; + +export interface SwiperEvents { + // CORE_EVENTS_START + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: Swiper) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: Swiper) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: Swiper) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: Swiper, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: Swiper, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: Swiper, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: Swiper) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: Swiper) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: Swiper) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: Swiper) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: Swiper, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: Swiper, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: Swiper, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: Swiper) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: Swiper) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: Swiper) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: Swiper) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: Swiper) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: Swiper) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: Swiper) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: Swiper, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: Swiper) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: Swiper) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: Swiper) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: Swiper) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: Swiper) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: Swiper) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: Swiper, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: Swiper) => void; + // CORE_EVENTS_END +} + +interface SwiperEvents extends A11yEvents {} +interface SwiperEvents extends AutoplayEvents {} +interface SwiperEvents extends ControllerEvents {} +interface SwiperEvents extends CoverflowEffectEvents {} +interface SwiperEvents extends CubeEffectEvents {} +interface SwiperEvents extends FadeEffectEvents {} +interface SwiperEvents extends FlipEffectEvents {} +interface SwiperEvents extends CreativeEffectEvents {} +interface SwiperEvents extends CardsEffectEvents {} +interface SwiperEvents extends HashNavigationEvents {} +interface SwiperEvents extends HistoryEvents {} +interface SwiperEvents extends KeyboardEvents {} +interface SwiperEvents extends MousewheelEvents {} +interface SwiperEvents extends NavigationEvents {} +interface SwiperEvents extends PaginationEvents {} +interface SwiperEvents extends ParallaxEvents {} +interface SwiperEvents extends ScrollbarEvents {} +interface SwiperEvents extends ThumbsEvents {} +interface SwiperEvents extends VirtualEvents {} +interface SwiperEvents extends ZoomEvents {} +interface SwiperEvents extends FreeModeEvents {} diff --git a/docs/vendor/swiper-bundle/types/swiper-options.d.ts b/docs/vendor/swiper-bundle/types/swiper-options.d.ts new file mode 100644 index 0000000..7a97910 --- /dev/null +++ b/docs/vendor/swiper-bundle/types/swiper-options.d.ts @@ -0,0 +1,1217 @@ +import type { A11yOptions } from './modules/a11y.d.ts'; +import type { AutoplayOptions } from './modules/autoplay.d.ts'; +import type { ControllerOptions } from './modules/controller.d.ts'; +import type { CoverflowEffectOptions } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectOptions } from './modules/effect-cube.d.ts'; +import type { FadeEffectOptions } from './modules/effect-fade.d.ts'; +import type { FlipEffectOptions } from './modules/effect-flip.d.ts'; +import type { CreativeEffectOptions } from './modules/effect-creative.d.ts'; +import type { CardsEffectOptions } from './modules/effect-cards.d.ts'; +import type { HashNavigationOptions } from './modules/hash-navigation.d.ts'; +import type { HistoryOptions } from './modules/history.d.ts'; +import type { KeyboardOptions } from './modules/keyboard.d.ts'; +import type { MousewheelOptions } from './modules/mousewheel.d.ts'; +import type { NavigationOptions } from './modules/navigation.d.ts'; +import type { PaginationOptions } from './modules/pagination.d.ts'; +import type { ParallaxOptions } from './modules/parallax.d.ts'; +import type { ScrollbarOptions } from './modules/scrollbar.d.ts'; +import type { ThumbsOptions } from './modules/thumbs.d.ts'; +import type { VirtualOptions } from './modules/virtual.d.ts'; +import type { ZoomOptions } from './modules/zoom.d.ts'; +import type { FreeModeOptions } from './modules/free-mode.d.ts'; +import type { GridOptions } from './modules/grid.d.ts'; + +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +export interface SwiperOptions { + /** + * Array with Swiper modules + * + * @example + * ```js + * import Swiper from 'swiper'; + * import { Navigation, Pagination } from 'swiper/modules'; + * + * const swiper = new Swiper('.swiper', { + * modules: [ Navigation, Pagination ], + * }); + * ``` + */ + modules?: SwiperModule[]; + /** + * Inject text styles to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStyles?: string[]; + /** + * Inject styles ``s to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStylesUrls?: string[]; + /** + * Whether Swiper should be initialised automatically when you create an instance. + * If disabled, then you need to init it manually by calling `swiper.init()` + * + * @default true + */ + init?: boolean; + + /** + * Whether Swiper initially enabled. When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + * @default true + */ + enabled?: boolean; + + /** + * Swiper will recalculate slides position on window resize (orientationchange) + * + * @default true + */ + updateOnWindowResize?: boolean; + + /** + * When enabled it will use ResizeObserver (if supported by browser) on swiper container to detect container resize (instead of watching for window resize) + * + * @default true + */ + resizeObserver?: boolean; + + /** + * Index number of initial slide. + * + * @default 0 + */ + initialSlide?: number; + + /** + * Can be `'horizontal'` or `'vertical'` (for vertical slider). + * + * @default 'horizontal' + */ + direction?: 'horizontal' | 'vertical'; + + /** + * When enabled, will swipe slides only forward (one-way) regardless of swipe direction + * + * @default false + */ + + oneWayMovement?: boolean; + + /** + * The name of the swiper element node name; used for detecting web component rendering + * + * @default 'SWIPER-CONTAINER' + */ + swiperElementNodeName?: string; + + /** + * Duration of transition between slides (in ms) + * + * @default 300 + */ + speed?: number; + + /** + * Enabled this option and plugin will set width/height on swiper wrapper equal to total size of all slides. + * Mostly should be used as compatibility fallback option for browser that don't support flexbox layout well + * + * @default false + */ + setWrapperSize?: boolean; + + /** + * Enabled this option and swiper will be operated as usual except it will not move, real translate values on wrapper will not be set. + * Useful when you may need to create custom slide transition + * + * @default false + */ + virtualTranslate?: boolean; + + /** + * Swiper width (in px). Parameter allows to force Swiper width. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + width?: number | null; + + /** + * Swiper height (in px). Parameter allows to force Swiper height. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + height?: number | null; + + /** + * Set to `true` and slider wrapper will adapt its height to the height of the currently active slide + * + * @default false + */ + autoHeight?: boolean; + + /** + * Set to `true` to round values of slides width and height to prevent blurry texts on usual + * resolution screens (if you have such) + * + * @default false + */ + roundLengths?: boolean; + + /** + * Set to `true` on Swiper for correct touch events interception. Use only on + * swipers that use same direction as the parent one + * + * @default false + */ + nested?: boolean; + + /** + * When enabled Swiper will automatically wrap slides with swiper-wrapper element, + * and will create required elements for navigation, pagination and scrollbar + * they are enabled (with their respective params object or with boolean `true`)) + * + * @default false + */ + createElements?: boolean; + + /** + * Event name prefix for all DOM events emitted by Swiper Element (web component) + * + * @default `swiper` + */ + eventsPrefix?: string; + + /** + * CSS selector for focusable elements. Swiping will be disabled on such elements if they are "focused" + * + * @default 'input, select, option, textarea, button, video, label' + */ + focusableElements?: string; + + /** + * If enabled (by default) and navigation elements' parameters passed as a string (like `".pagination"`) + * then Swiper will look for such elements through child elements first. + * Applies for pagination, prev/next buttons and scrollbar elements + * + * @default true + */ + uniqueNavElements?: boolean; + + /** + * Transition effect. Can be `'slide'`, `'fade'`, `'cube'`, `'coverflow'`, `'flip'`, `'creative'` or `'cards'` + * + * @default 'slide' + */ + effect?: 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip' | 'creative' | 'cards' | string; + + /** + * Fire Transition/SlideChange/Start/End events on swiper initialization. + * Such events will be fired on initialization in case of your initialSlide is not 0, or you use loop mode + * + * @default true + */ + runCallbacksOnInit?: boolean; + + /** + * When enabled Swiper will be disabled and hide navigation buttons on + * case there are not enough slides for sliding. + * + * @default true + */ + watchOverflow?: boolean; + + /** + * userAgent string. Required for browser/device detection when rendered on server-side + * + * @default null + */ + userAgent?: string | null; + + /** + * Required for active slide detection when rendered on server-side and enabled history + * + * @default null + */ + url?: string | null; + + /** + * Register event handlers + */ + on?: { + [event in keyof SwiperEvents]?: SwiperEvents[event]; + }; + + /** + * Add event listener that will be fired on all events + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * onAny(eventName, ...args) { + * console.log('Event: ', eventName); + * console.log('Event data: ', args); + * } + * }); + * ``` + */ + onAny?(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * When enabled it will use modern CSS Scroll Snap API. + * It doesn't support all of Swiper's features, but potentially should bring a much better performance in simple configurations. + * + * This is what is not supported when it is enabled: + * + * - Cube effect + * - `speed` parameter may not have no effect + * - All transition start/end related events (use `slideChange` instead) + * - `slidesPerGroup` has limited support + * - `simulateTouch` doesn't have effect and "dragging" with mouse doesn't work + * - `resistance` doesn't have any effect + * - `allowSlidePrev/Next` + * - `swipeHandler` + * + * In case if you use it with other effects, especially 3D effects, it is required to wrap slide's content with `
` element. And if you use any custom styles on slides (like background colors, border radius, border, etc.), they should be set on `swiper-slide-transform` element instead. + * + * @example + * ```html + *
+ *
+ *
+ * + *
+ * ... slide content ... + *
+ *
+ * ... + *
+ *
+ * + * ``` + * + * @default false + */ + cssMode?: boolean; + + // Slides grid + + /** + * Distance between slides in px. + * + * @default 0 + * + * @note If you use "margin" css property to the elements which go into Swiper in which you pass "spaceBetween" into, navigation might not work properly. + */ + spaceBetween?: number | string; + + /** + * Number of slides per view (slides visible at the same time on slider's container). + * @note `slidesPerView: 'auto'` is currently not compatible with multirow mode, when `grid.rows` > 1 + * + * @default 1 + */ + slidesPerView?: number | 'auto'; + + /** + * If total number of slides less than specified here value, then Swiper will enable `backface-visibility: hidden` on slide elements to reduce visual "flicker" in Safari. + * + * @note It is not recommended to enable it on large amount of slides as it will reduce performance + * + * @default 10 + */ + maxBackfaceHiddenSlides?: number; + + /** + * Set numbers of slides to define and enable group sliding. Useful to use with slidesPerView > 1 + * + * @default 1 + */ + slidesPerGroup?: number; + + /** + * The parameter works in the following way: If `slidesPerGroupSkip` equals `0` (default), no slides are excluded from grouping, and the resulting behaviour is the same as without this change. + * + * If `slidesPerGroupSkip` is equal or greater than `1` the first X slides are treated as single groups, whereas all following slides are grouped by the `slidesPerGroup` value. + * + * @default 0 + */ + slidesPerGroupSkip?: number; + + /** + * This param intended to be used only with `slidesPerView: 'auto'` and `slidesPerGroup: 1`. When enabled, it will skip all slides in view on `.slideNext()` & `.slidePrev()` methods calls, on Navigation "buttons" clicks and in autoplay. + * + * @default false + */ + slidesPerGroupAuto?: boolean; + + /** + * If `true`, then active slide will be centered, not always on the left side. + * + * @default false + */ + centeredSlides?: boolean; + + /** + * If `true`, then active slide will be centered without adding gaps at the beginning and end of slider. + * Required `centeredSlides: true`. Not intended to be used with `loop` or `pagination` + * + * @default false + */ + centeredSlidesBounds?: boolean; + + /** + * Add (in px) additional slide offset in the beginning of the container (before all slides) + * + * @default 0 + */ + slidesOffsetBefore?: number; + + /** + * Add (in px) additional slide offset in the end of the container (after all slides) + * + * @default 0 + */ + slidesOffsetAfter?: number; + + /** + * Normalize slide index. + * + * @default true + */ + normalizeSlideIndex?: boolean; + + /** + * When enabled it center slides if the amount of slides less than `slidesPerView`. Not intended to be used `loop` mode and `grid.rows` + * + * @default false + */ + centerInsufficientSlides?: boolean; + + /** + * This option may a little improve desktop usability. If `true`, user will see the "grab" cursor when hover on Swiper + * + * @default false + */ + grabCursor?: boolean; + + /** + * Target element to listen touch events on. Can be `'container'` (to listen for touch events on swiper) or `'wrapper'` + * (to listen for touch events on swiper-wrapper) + * + * @default 'wrapper' + */ + touchEventsTarget?: 'container' | 'wrapper'; + + /** + * Touch ratio + * + * @default 1 + */ + touchRatio?: number; + + /** + * Allowable angle (in degrees) to trigger touch move + * + * @default 45 + */ + touchAngle?: number; + + /** + * If `true`, Swiper will accept mouse events like touch events (click and drag to change slides) + * + * @default true + */ + simulateTouch?: boolean; + + /** + * Set to `false` if you want to disable short swipes + * + * @default true + */ + shortSwipes?: boolean; + + /** + * Set to `false` if you want to disable long swipes + * + * @default true + */ + longSwipes?: boolean; + + /** + * Ratio to trigger swipe to next/previous slide during long swipes + * + * @default 0.5 + */ + longSwipesRatio?: number; + + /** + * Minimal duration (in ms) to trigger swipe to next/previous slide during long swipes + * + * @default 300 + */ + longSwipesMs?: number; + + /** + * If disabled, then slider will be animated only when you release it, it will not move while you hold your finger on it + * + * @default true + */ + followFinger?: boolean; + + /** + * If `false`, then the only way to switch the slide is use of external API functions like slidePrev or slideNext + * + * @default true + */ + allowTouchMove?: boolean; + + /** + * Threshold value in px. If "touch distance" will be lower than this value then swiper will not move + * + * @default 5 + */ + threshold?: number; + + /** + * If disabled, `pointerdown` event won't be prevented + * + * @default true + */ + touchStartPreventDefault?: boolean; + + /** + * Force to always prevent default for `touchstart` (`pointerdown`) event + * + * @default false + */ + touchStartForcePreventDefault?: boolean; + + /** + * If enabled, then propagation of "touchmove" will be stopped + * + * @default false + */ + touchMoveStopPropagation?: boolean; + + /** + * Enable to release Swiper events for swipe-back work in app. If set to `'prevent'` then it will prevent system swipe-back navigation instead. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer (touch) events. + * + * @default false + */ + edgeSwipeDetection?: boolean | string; + + /** + * Area (in px) from left edge of the screen to release touch events for swipe-back in app + * + * @default 20 + */ + edgeSwipeThreshold?: number; + + /** + * Enable to release touch events on slider edge position (beginning, end) to allow for further page scrolling. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer events. Also `threshold` parameter must be set to `0` + * + * @default false + */ + touchReleaseOnEdges?: boolean; + + /** + * Passive event listeners will be used by default where possible to improve scrolling performance on mobile devices. + * But if you need to use `e.preventDefault` and you have conflict with it, then you should disable this parameter + * + * @default true + */ + passiveListeners?: boolean; + + // Touch Resistance + + /** + * Set to `false` if you want to disable resistant bounds + * + * @default true + */ + resistance?: boolean; + + /** + * This option allows you to control resistance ratio + * + * @default 0.85 + */ + resistanceRatio?: number; + + // Swiping / No swiping + /** + * When enabled it won't allow to change slides by swiping or navigation/pagination buttons during transition + * + * @default false + */ + preventInteractionOnTransition?: boolean; + + /** + * Set to `false` to disable swiping to previous slide direction (to left or top) + * + * @default true + */ + allowSlidePrev?: boolean; + + /** + * Set to `false` to disable swiping to next slide direction (to right or bottom) + * + * @default true + */ + allowSlideNext?: boolean; + + /** + * Enable/disable swiping on elements matched to class specified in `noSwipingClass` + * + * @default true + */ + noSwiping?: boolean; + + /** + * Specify `noSwiping`'s element css class + * + * @default 'swiper-no-swiping' + */ + noSwipingClass?: string; + + /** + * Can be used instead of `noSwipingClass` to specify elements to disable swiping on. + * For example `'input'` will disable swiping on all inputs + * + * @default + */ + noSwipingSelector?: string; + + /** + * String with CSS selector or HTML element of the container with pagination that will work as only available handler for swiping + * + * @default null + */ + swipeHandler?: CSSSelector | HTMLElement | null; + + // Clicks + /** + * Set to `true` to prevent accidental unwanted clicks on links during swiping + * + * @default true + */ + preventClicks?: boolean; + + /** + * Set to `true` to stop clicks event propagation on links during swiping + * + * @default true + */ + preventClicksPropagation?: boolean; + + /** + * Set to `true` and click on any slide will produce transition to this slide + * + * @default false + */ + slideToClickedSlide?: boolean; + + // Progress + /** + * Enable this feature to calculate each slides progress and visibility (slides in viewport will have additional visible class) + * + * @default false + */ + watchSlidesProgress?: boolean; + + /** + * Set to `true` to enable continuous loop mode + * + * Because of nature of how the loop mode works (it will rearrange slides), total number of slides must be: + * + * - more than or equal to `slidesPerView` + `slidesPerGroup` + * - even to `slidesPerGroup` (or use `loopAddBlankSlides` parameter) + * - even to `grid.rows` (or use `loopAddBlankSlides` parameter) + * + * @default false + * + */ + loop?: boolean; + + /** + * Automatically adds blank slides if you use Grid or `slidesPerGroup` and the total amount of slides is not even to `slidesPerGroup` or to `grid.rows` + * + * + * @default true + * + */ + loopAddBlankSlides?: boolean; + + /** + * Allows to increase amount of looped slides + * + * @default 0 + */ + loopAdditionalSlides?: number; + + /** + * If enabled then slideNext/Prev will do nothing while slider is animating in loop mode + * + * @default true + */ + loopPreventsSliding?: boolean; + + /** + * Set to `true` to enable "rewind" mode. When enabled, clicking "next" navigation button (or calling `.slideNext()`) when on last slide will slide back to the first slide. Clicking "prev" navigation button (or calling `.slidePrev()`) when on first slide will slide forward to the last slide. + * + * @default false + * + * @note Should not be used together with `loop` mode + */ + rewind?: boolean; + + /** + * Allows to set different parameter for different responsive breakpoints (screen sizes). Not all parameters can be changed in breakpoints, only those which do not require different layout and logic, like `slidesPerView`, `slidesPerGroup`, `spaceBetween`, `grid.rows`. Such parameters like `loop` and `effect` won't work + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * // Default parameters + * slidesPerView: 1, + * spaceBetween: 10, + * // Responsive breakpoints + * breakpoints: { + * // when window width is >= 320px + * 320: { + * slidesPerView: 2, + * spaceBetween: 20 + * }, + * // when window width is >= 480px + * 480: { + * slidesPerView: 3, + * spaceBetween: 30 + * }, + * // when window width is >= 640px + * 640: { + * slidesPerView: 4, + * spaceBetween: 40 + * } + * } + * }) + * ``` + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * slidesPerView: 1, + * spaceBetween: 10, + * // using "ratio" endpoints + * breakpoints: { + * '@0.75': { + * slidesPerView: 2, + * spaceBetween: 20, + * }, + * '@1.00': { + * slidesPerView: 3, + * spaceBetween: 40, + * }, + * '@1.50': { + * slidesPerView: 4, + * spaceBetween: 50, + * }, + * } + * }); + * ``` + */ + breakpoints?: { + [width: number]: SwiperOptions; + [ratio: string]: SwiperOptions; + }; + + /** + * Base for breakpoints (beta). Can be `window` or `container`. If set to `window` (by default) then breakpoint keys mean window width. If set to `container` then breakpoint keys treated as swiper container width + * + * @default 'window' + */ + breakpointsBase?: 'window' | 'container'; + + // Observer + /** + * Set to `true` to enable Mutation Observer on Swiper and its elements. In this case Swiper will be updated (reinitialized) each time if you change its style (like hide/show) or modify its child elements (like adding/removing slides) + * + * @default false + */ + observer?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper slide children elements + * + * @default false + */ + observeSlideChildren?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper parent elements + * + * @default false + */ + observeParents?: boolean; + + // Namespace + /** + * The beginning of the modifier CSS class that can be added to swiper container depending on different parameters + * + * @default 'swiper-' + */ + containerModifierClass?: string; + + /** + * CSS class name of slide + * + * @default 'swiper-slide' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideClass?: string; + + /** + * CSS class name of currently active slide + * + * @default 'swiper-slide-active' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideActiveClass?: string; + + /** + * CSS class name of currently/partially visible slide + * + * @default 'swiper-slide-visible' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideVisibleClass?: string; + + /** + * CSS class name of fully (when whole slide is in the viewport) visible slide + * + * @default 'swiper-slide-fully-visible' + * + * @note Not supported in Swiper React/Vue + */ + slideFullyVisibleClass?: string; + + /** + * CSS class name of the blank slide added by the loop mode (when `loopAddBlankSlides` is enabled) + * + * @default 'swiper-slide-blank' + * + * @note Not supported in Swiper React/Vue + */ + slideBlankClass?: string; + + /** + * CSS class name of slide which is right after currently active slide + * + * @default 'swiper-slide-next' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideNextClass?: string; + + /** + * CSS class name of slide which is right before currently active slide + * + * @default 'swiper-slide-prev' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slidePrevClass?: string; + + /** + * CSS class name of slides' wrapper + * + * @default 'swiper-wrapper' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + * + */ + wrapperClass?: string; + + /** + * CSS class name of lazy preloader + * + * @default 'swiper-lazy-preloader' + */ + lazyPreloaderClass?: string; + + /** + * Number of next and previous slides to preload. Only applicable if using lazy loading. + * + * @default 0 + */ + lazyPreloadPrevNext?: number; + + /** + * Object with a11y parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * a11y: { + * prevSlideMessage: 'Previous slide', + * nextSlideMessage: 'Next slide', + * }, + * }); + * ``` + */ + a11y?: A11yOptions; + + /** + * Object with autoplay parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + *}); + * ``` + */ + autoplay?: AutoplayOptions | boolean; + + /** + * Object with controller parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * controller: { + * inverse: true, + * }, + * }); + * ``` + */ + controller?: ControllerOptions; + + /** + * Object with Coverflow-effect parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'coverflow', + * coverflowEffect: { + * rotate: 30, + * slideShadows: false, + * }, + * }); + * ``` + */ + coverflowEffect?: CoverflowEffectOptions; + + /** + * Object with Cube-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cube', + * cubeEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + cubeEffect?: CubeEffectOptions; + + /** + * Object with Fade-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'fade', + * fadeEffect: { + * crossFade: true + * }, + * }); + * ``` + */ + fadeEffect?: FadeEffectOptions; + + /** + * Object with Flip-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'flip', + * flipEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + flipEffect?: FlipEffectOptions; + + /** + * Object with Creative-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'creative', + * creativeEffect: { + * prev: { + * // will set `translateZ(-400px)` on previous slides + * translate: [0, 0, -400], + * }, + * next: { + * // will set `translateX(100%)` on next slides + * translate: ['100%', 0, 0], + * }, + * }, + * }); + * ``` + */ + creativeEffect?: CreativeEffectOptions; + + /** + * Object with Cards-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cards', + * cardsEffect: { + * // ... + * }, + * }); + * ``` + */ + cardsEffect?: CardsEffectOptions; + + /** + * Enables hash url navigation to for slides. + * Object with hash navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * hashNavigation: { + * replaceState: true, + * }, + * }); + * ``` + */ + hashNavigation?: HashNavigationOptions | boolean; + + /** + * Enables history push state where every slide will have its own url. In this parameter you have to specify main slides url like `"slides"` and specify every slide url using `data-history` attribute. + * + * Object with history navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * history: { + * replaceState: true, + * }, + * }); + * ``` + * + * @example + * ```html + * + *
+ * ``` + */ + history?: HistoryOptions | boolean; + + /** + * Enables navigation through slides using keyboard. Object with keyboard parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * keyboard: { + * enabled: true, + * onlyInViewport: false, + * }, + * }); + * ``` + */ + keyboard?: KeyboardOptions | boolean; + + /** + * Enables navigation through slides using mouse wheel. Object with mousewheel parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * mousewheel: { + * invert: true, + * }, + * }); + * ``` + */ + mousewheel?: MousewheelOptions | boolean; + + /** + * Object with navigation parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * navigation: { + * nextEl: '.swiper-button-next', + * prevEl: '.swiper-button-prev', + * }, + * }); + * ``` + */ + navigation?: NavigationOptions | boolean; + + /** + * Object with pagination parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * pagination: { + * el: '.swiper-pagination', + * type: 'bullets', + * }, + * }); + * ``` + */ + pagination?: PaginationOptions | boolean; + + /** + * Object with parallax parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * parallax: true, + * }); + * ``` + */ + parallax?: ParallaxOptions | boolean; + + /** + * Object with scrollbar parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ + scrollbar?: ScrollbarOptions | boolean; + + /** + * Object with thumbs component parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * ... + * thumbs: { + * swiper: thumbsSwiper + * } + * }); + * ``` + */ + thumbs?: ThumbsOptions; + + /** + * Enables virtual slides functionality. Object with virtual slides parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * virtual: { + * slides: ['Slide 1', 'Slide 2', 'Slide 3', 'Slide 4', 'Slide 5'], + * }, + * }); + * ``` + */ + virtual?: VirtualOptions | boolean; + + /** + * Enables zooming functionality. Object with zoom parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * zoom: { + * maxRatio: 5, + * }, + * }); + * ``` + */ + zoom?: ZoomOptions | boolean; + + /** + * Enables free mode functionality. Object with free mode parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * freeMode: true, + * }); + * + * const swiper = new Swiper('.swiper', { + * freeMode: { + * enabled: true, + * sticky: true, + * }, + * }); + * ``` + */ + freeMode?: FreeModeOptions | boolean; + + /** + * Object with grid parameters to enable "multirow" slider. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * grid: { + * rows: 2, + * }, + * }); + * ``` + */ + grid?: GridOptions; + + /** + * !INTERNAL When enabled will emit "_containerClasses" and "_slideClass" events + */ + _emitClasses?: boolean; +} diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..3804380 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,208 @@ +import { readFileSync, rmSync } from 'node:fs'; + +import gulp from 'gulp'; +import plumber from 'gulp-plumber'; +import htmlmin from 'gulp-htmlmin'; +import * as dartSass from 'sass'; +import gulpSass from 'gulp-sass'; +import postcss from 'gulp-postcss'; +import postUrl from 'postcss-url'; +import lightningcss from 'postcss-lightningcss'; +import { createGulpEsbuild } from 'gulp-esbuild'; +import browserslistToEsbuild from 'browserslist-to-esbuild'; +import sharp from 'gulp-sharp-responsive'; +import svgo from 'gulp-svgmin'; +import { stacksvg } from 'gulp-stacksvg'; +import server from 'browser-sync'; +import bemlinter from 'gulp-html-bemlinter'; + +const { src, dest, watch, series, parallel } = gulp; +const sass = gulpSass(dartSass); +const PATH_TO_SOURCE = './source/'; +const PATH_TO_DIST = './build/'; +const PATH_TO_RAW = './raw/'; +const PATHS_TO_STATIC = [ + `${PATH_TO_SOURCE}fonts/**/*.{woff2,woff}`, + `${PATH_TO_SOURCE}*.ico`, + `${PATH_TO_SOURCE}*.webmanifest`, + `${PATH_TO_SOURCE}favicons/**/*.{png,svg}`, + `${PATH_TO_SOURCE}vendor/**/*`, + `${PATH_TO_SOURCE}images/**/*`, + `!${PATH_TO_SOURCE}**/README.md`, +]; +let isDevelopment = true; + +export function processMarkup () { + return src(`${PATH_TO_SOURCE}**/*.html`) + .pipe(htmlmin({ collapseWhitespace: !isDevelopment })) + .pipe(dest(PATH_TO_DIST)) + .pipe(server.stream()); +} + +export function lintBem () { + return src(`${PATH_TO_SOURCE}**/*.html`) + .pipe(bemlinter()); +} + +export function processStyles () { + return src(`${PATH_TO_SOURCE}styles/*.scss`, { sourcemaps: isDevelopment }) + .pipe(plumber()) + .pipe(sass().on('error', sass.logError)) + .pipe(postcss([ + postUrl([ + { + filter: '**/*', + assetsPath: '../', + }, + { + filter: '**/icons/**/*.svg', + url: (asset) => asset.url.replace( + /icons\/(.+?)\.svg$/, + (match, p1) => `icons/stack.svg#${p1.replace(/\//g, '_')}` + ), + multi: true, + }, + ]), + lightningcss({ + lightningcssOptions: { + minify: !isDevelopment, + }, + }) + ])) + .pipe(dest(`${PATH_TO_DIST}styles`, { sourcemaps: isDevelopment })) + .pipe(server.stream()); +} + +export function processScripts () { + const gulpEsbuild = createGulpEsbuild({ incremental: isDevelopment }); + + return src(`${PATH_TO_SOURCE}scripts/*.js`) + .pipe(gulpEsbuild({ + bundle: true, + format: 'esm', + // splitting: true, + platform: 'browser', + minify: !isDevelopment, + sourcemap: isDevelopment, + target: browserslistToEsbuild(), + })) + .pipe(dest(`${PATH_TO_DIST}scripts`)) + .pipe(server.stream()); +} + +export function optimizeRaster () { + const RAW_DENSITY = 2; + const TARGET_FORMATS = [undefined, 'webp']; // undefined — initial format: jpg or png + + function createOptionsFormat() { + const formats = []; + + for (const format of TARGET_FORMATS) { + for (let density = RAW_DENSITY; density > 0; density--) { + formats.push( + { + format, + rename: { suffix: `@${density}x` }, + width: ({ width }) => Math.ceil(width * density / RAW_DENSITY), + jpegOptions: { progressive: true }, + }, + ); + } + } + + return { formats }; + } + + return src(`${PATH_TO_RAW}images/**/*.{png,jpg,jpeg}`) + .pipe(sharp(createOptionsFormat())) + .pipe(dest(`${PATH_TO_SOURCE}images`)); +} + +export function optimizeVector () { + return src([`${PATH_TO_RAW}**/*.svg`]) + .pipe(svgo()) + .pipe(dest(PATH_TO_SOURCE)); +} + +export function createStack () { + return src(`${PATH_TO_SOURCE}icons/**/*.svg`) + .pipe(stacksvg()) + .pipe(dest(`${PATH_TO_DIST}icons`)); +} + +export function copyStatic () { + return src(PATHS_TO_STATIC, { base: PATH_TO_SOURCE }) + .pipe(dest(PATH_TO_DIST)); +} + +export function startServer () { + const serveStatic = PATHS_TO_STATIC + .filter((path) => path.startsWith('!') === false) + .map((path) => { + const dir = path.replace(/(\/\*\*\/.*$)|\/$/, ''); + const route = dir.replace(PATH_TO_SOURCE, '/'); + + return { route, dir }; + }); + + server.init({ + server: { + baseDir: PATH_TO_DIST + }, + serveStatic, + cors: true, + notify: false, + ui: false, + }, (err, bs) => { + bs.addMiddleware('*', (req, res) => { + res.write(readFileSync(`${PATH_TO_DIST}404.html`)); + res.end(); + }); + }); + + watch(`${PATH_TO_SOURCE}**/*.{html,njk}`, series(processMarkup)); + watch(`${PATH_TO_SOURCE}styles/**/*.scss`, series(processStyles)); + watch(`${PATH_TO_SOURCE}scripts/**/*.js`, series(processScripts)); + watch(`${PATH_TO_SOURCE}icons/**/*.svg`, series(createStack, reloadServer)); + watch(PATHS_TO_STATIC, series(reloadServer)); +} + +function reloadServer (done) { + server.reload(); + done(); +} + +export function removeBuild (done) { + rmSync(PATH_TO_DIST, { + force: true, + recursive: true, + }); + done(); +} + +export function buildProd (done) { + isDevelopment = false; + series( + removeBuild, + parallel( + processMarkup, + processStyles, + processScripts, + createStack, + copyStatic, + ), + )(done); +} + +export function runDev (done) { + series( + removeBuild, + parallel( + processMarkup, + processStyles, + processScripts, + createStack, + ), + startServer, + )(done); +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5e9aeaf --- /dev/null +++ b/package-lock.json @@ -0,0 +1,14408 @@ +{ + "name": "htmlacademy-gulp-template", + "version": "2.0.6", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "htmlacademy-gulp-template", + "version": "2.0.6", + "devDependencies": { + "@htmlacademy/editorconfig-cli": "3.0.0", + "@linthtml/linthtml": "0.9.6", + "browser-sync": "3.0.2", + "browserslist-to-esbuild": "2.1.1", + "eslint": "8.57.0", + "eslint-config-htmlacademy": "10.0.1", + "gulp": "4.0.2", + "gulp-esbuild": "0.12.0", + "gulp-html-bemlinter": "4.0.0", + "gulp-htmlmin": "5.0.1", + "gulp-plumber": "1.2.1", + "gulp-postcss": "10.0.0", + "gulp-sass": "5.1.0", + "gulp-sharp-responsive": "0.4.1", + "gulp-stacksvg": "4.0.0", + "gulp-svgmin": "4.1.0", + "linthtml-config-htmlacademy": "1.0.25", + "npm-run-all": "4.1.5", + "postcss": "8.4.38", + "postcss-lightningcss": "1.0.0", + "postcss-url": "10.1.3", + "sass": "1.77.4", + "stylelint": "16.6.1", + "stylelint-config-htmlacademy": "4.2.3", + "w3c-html-validator": "1.8.1" + }, + "engines": { + "node": "^18.18 || ^20.9" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz", + "integrity": "sha512-xI/tL2zxzEbESvnSxwFgwvy5HS00oCXxL4MLs6HUiDcYfwowsoQaABKxUElp1ARITrINzBnsECOc1q0eg2GOrA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.3.1" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.3.1.tgz", + "integrity": "sha512-iMNHTyxLbBlWIfGtabT157LH9DUx9X8+Y3oymFEuMj8HNc+rpE3dPFGFgHjpKfjeFDjLjYIAIhXPGvS2lKxL9g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.11.tgz", + "integrity": "sha512-uox5MVhvNHqitPP+SynrB1o8oPxPMt2JLgp5ghJOWf54WGQ5OKu47efne49r1SWqs3wRP8xSWjnO9MBKxhB1dA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", + "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, + "node_modules/@dual-bundle/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@htmlacademy/editorconfig-cli": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@htmlacademy/editorconfig-cli/-/editorconfig-cli-3.0.0.tgz", + "integrity": "sha512-0JH4ZYdyTQCFG1PCJI5T/5m71k58RDsrYmt8UPNTwmbK/Gk8lPOot+36fF2YdfgfXvXOCeeLdvRJr9YBCBZkoA==", + "dev": true, + "dependencies": { + "commander": "12.0.0", + "globby": "14.0.1", + "lintspaces": "0.11.0", + "picocolors": "1.0.0" + }, + "bin": { + "ec": "index.js", + "editorconfig-cli": "index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@linthtml/cli": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@linthtml/cli/-/cli-0.9.5.tgz", + "integrity": "sha512-QA61Fhb6T1ho8jPbbZBoqd5dfiuRtg/61dJgKt08NDrCAiwZeftX0nVjzXJq1BpQzLY7VzugGMnZxWq5IYy64g==", + "dev": true, + "dependencies": { + "chalk": "4.1.1", + "inquirer": "^8.1.1", + "js-yaml": "^3.14.0", + "kebabcase": "1.0.1", + "lodash.kebabcase": "^4.1.1", + "meow": "^9.0.0", + "ora": "^5.3.0", + "table-layout": "1.0.1" + } + }, + "node_modules/@linthtml/dom-utils": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@linthtml/dom-utils/-/dom-utils-0.9.5.tgz", + "integrity": "sha512-q7riY+zNsTJeD0IoRV+0VdlFu2Y5jxxFCtlw97espB7+LiQalvJV/o3bn27DuQ8U6KPbFeFDjkfS8DX5tD+Ggg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0", + "domhandler": "^4.2.2" + } + }, + "node_modules/@linthtml/html-parser": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@linthtml/html-parser/-/html-parser-0.9.5.tgz", + "integrity": "sha512-dvh7+jhGlAVOowlBA5Opy4PjIyT672CLyOVhiPVfkkcJkZSDKcM1GAEPhwtEAWJjdk8rpS7JaQjkZBjqHqWn5g==", + "dev": true, + "dependencies": { + "@linthtml/dom-utils": "^0.9.5", + "domhandler": "^4.2.2", + "htmlparser2": "^7.1.2" + } + }, + "node_modules/@linthtml/linthtml": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@linthtml/linthtml/-/linthtml-0.9.6.tgz", + "integrity": "sha512-balMwDpl0GKq0x35aFSsEuPKUyn2qoz793SprRZvFu30kfdXldH5TBXsud1ltf/N2RIEQctK3xkdtBKbb/ZLYA==", + "dev": true, + "dependencies": { + "@linthtml/cli": "^0.9.3", + "@linthtml/dom-utils": "^0.9.0", + "@linthtml/html-parser": "^0.9.0", + "bulk-require": "1.0.1", + "cosmiconfig": "7.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.2", + "ignore": "^5.1.4", + "lodash.pull": "4.1.0", + "resolve-from": "^5.0.0" + }, + "bin": { + "linthtml": "bin/linthtml.js" + } + }, + "node_modules/@linthtml/linthtml/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@linthtml/linthtml/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "node_modules/@stylistic/stylelint-plugin": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-2.1.2.tgz", + "integrity": "sha512-JsSqu0Y3vsX+PBl+DwULxC0cIv9C1yIcq1MXkx7pBOGtTqU26a75I8MPYMiEYvrsXgsKLi65xVgy1iLVSZquJA==", + "dev": true, + "dependencies": { + "@csstools/css-parser-algorithms": "^2.6.1", + "@csstools/css-tokenizer": "^2.2.4", + "@csstools/media-query-list-parser": "^2.1.9", + "is-plain-object": "^5.0.0", + "postcss-selector-parser": "^6.0.16", + "postcss-value-parser": "^4.2.0", + "style-search": "^0.1.0", + "stylelint": "^16.4.0" + }, + "engines": { + "node": "^18.12 || >=20.9" + }, + "peerDependencies": { + "stylelint": "^16.0.2" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.12.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.2.tgz", + "integrity": "sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha512-eCjan3AVo/SxZ0/MyIYRtkpxIu/H3xZN7URr1vXVrISxeyz8fUFz0FJziamK4sS8I+t35y4rHg1b2PklyBe/7A==", + "dev": true, + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "dev": true, + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha512-ewaIr5y+9CUTGFwZfpECUbFlGcC0GCw1oqR9RI6h1gQCd9Aj2GxSckCnPsVJnmfMZbwFYE+leZGASgkWl06Jow==", + "dev": true, + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dev": true, + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/are-we-there-yet/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/are-we-there-yet/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "dev": true, + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "dev": true, + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "dev": true, + "dependencies": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "dependencies": { + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "dependencies": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "dev": true, + "dependencies": { + "async-done": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "dev": true, + "dependencies": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/bare-events": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", + "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", + "dev": true, + "optional": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-sync": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.2.tgz", + "integrity": "sha512-PC9c7aWJFVR4IFySrJxOqLwB9ENn3/TaXCXtAa0SzLwocLN3qMjN+IatbjvtCX92BjNXsY6YWg9Eb7F3Wy255g==", + "dev": true, + "dependencies": { + "browser-sync-client": "^3.0.2", + "browser-sync-ui": "^3.0.2", + "bs-recipes": "1.3.4", + "chalk": "4.1.2", + "chokidar": "^3.5.1", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "^4.0.1", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "^1.18.1", + "immutable": "^3", + "micromatch": "^4.0.2", + "opn": "5.3.0", + "portscanner": "2.2.0", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "0.16.2", + "serve-index": "1.9.1", + "serve-static": "1.13.2", + "server-destroy": "1.0.1", + "socket.io": "^4.4.1", + "ua-parser-js": "^1.0.33", + "yargs": "^17.3.1" + }, + "bin": { + "browser-sync": "dist/bin.js" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/browser-sync-client": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.2.tgz", + "integrity": "sha512-tBWdfn9L0wd2Pjuz/NWHtNEKthVb1Y67vg8/qyGNtCqetNz5lkDkFnrsx5UhPNPYUO8vci50IWC/BhYaQskDiQ==", + "dev": true, + "dependencies": { + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/browser-sync-ui": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.2.tgz", + "integrity": "sha512-V3FwWAI+abVbFLTyJjXJlCMBwjc3GXf/BPGfwO2fMFACWbIGW9/4SrBOFYEOOtqzCjQE0Di+U3VIb7eES4omNA==", + "dev": true, + "dependencies": { + "async-each-series": "0.1.1", + "chalk": "4.1.2", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^4.4.1", + "stream-throttle": "^0.1.3" + } + }, + "node_modules/browser-sync-ui/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/browser-sync/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/browserslist-to-esbuild": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/browserslist-to-esbuild/-/browserslist-to-esbuild-2.1.1.tgz", + "integrity": "sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==", + "dev": true, + "dependencies": { + "meow": "^13.0.0" + }, + "bin": { + "browserslist-to-esbuild": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "browserslist": "*" + } + }, + "node_modules/browserslist-to-esbuild/node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "dev": true + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bulk-require": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bulk-require/-/bulk-require-1.0.1.tgz", + "integrity": "sha512-BLU9AMnm1FMr68fR0sYvOkMew4x2ZJ8YztshITlGArl6aLtfAazOWiFj/bwJJixRO8C0wXx9PnRNRWeoR03e8Q==", + "dev": true, + "dependencies": { + "glob": "^7.1.1" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "dev": true, + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001605", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz", + "integrity": "sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clean-regexp/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/cli-argv-util": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/cli-argv-util/-/cli-argv-util-1.2.5.tgz", + "integrity": "sha512-UlMz4vhYsf0mdC1MwNJcmOL0YbgEF/Jkgyg114FwKK3LMh0J2PmTWdweQx509UKpPZOTg08qovDIsaeeqcgMpg==", + "dev": true, + "dependencies": { + "slash": "~5.1" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/cloneable-readable/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/cloneable-readable/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/cloneable-readable/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/cloneable-readable/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "dev": true, + "dependencies": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", + "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "dev": true, + "dependencies": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-functions-list": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", + "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", + "dev": true, + "engines": { + "node": ">=12 || >=16" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/css-select/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "dev": true + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "dependencies": { + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-compare/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", + "dev": true + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "dev": true, + "bin": { + "dev-ip": "lib/dev-ip.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexify/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/duplexify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "node_modules/each-props/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "dependencies": { + "lodash": "^4.17.10" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/eazy-logger": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", + "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", + "dev": true, + "dependencies": { + "chalk": "4.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eazy-logger/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/editorconfig": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-2.0.0.tgz", + "integrity": "sha512-s1NQ63WQ7RNXH6Efb2cwuyRlfpbtdZubvfNe4vCuoyGPewNPY7vah8JUSOFBiJ+jr99Qh8t0xKv0oITc1dclgw==", + "dev": true, + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^11.0.0", + "minimatch": "9.0.2", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/editorconfig/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", + "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.723", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.723.tgz", + "integrity": "sha512-rxFVtrMGMFROr4qqU6n95rUi9IlfIm+lIAt+hOToy/9r6CDv0XiEcQdC3VP71y1pE5CFTzKV0RvxOGYCPWWHPw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", + "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", + "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io-client/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/engine.io-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz", + "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dev": true, + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-htmlacademy": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-htmlacademy/-/eslint-config-htmlacademy-10.0.1.tgz", + "integrity": "sha512-Uhu6ZNWn4Y/aAf4pfQ6AvoD2+b4RB9HkK3G9mAIb4LKXzrp994FzY5jJs4cP+cduTHjro1y0vKz9ocrLCPDOSg==", + "dev": true, + "dependencies": { + "eslint-plugin-check-file": "2.6.2", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-unicorn": "46.0.0" + }, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-plugin-check-file": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-check-file/-/eslint-plugin-check-file-2.6.2.tgz", + "integrity": "sha512-z3Rur4JjOdNH0fia1IH7JQseo9NLuFVtw9j8P6z2c5XmXWemH7/qGpmMB8XbOt9bJBNpmPlNAGJty9b3EervPw==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3", + "micromatch": "^4.0.5" + }, + "engines": { + "node": "14.x || >= 16" + }, + "funding": { + "type": "ko_fi", + "url": "https://ko-fi.com/huanluo" + }, + "peerDependencies": { + "eslint": ">=7.28.0" + } + }, + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.34.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", + "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.17", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.10" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-unicorn": { + "version": "46.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-46.0.0.tgz", + "integrity": "sha512-j07WkC+PFZwk8J33LYp6JMoHa1lXc1u6R45pbSAipjpfpb7KIGr17VE2D685zCxR5VL4cjrl65kTJflziQWMDA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.19.1", + "@eslint-community/eslint-utils": "^4.1.2", + "ci-info": "^3.6.1", + "clean-regexp": "^1.0.0", + "esquery": "^1.4.0", + "indent-string": "^4.0.0", + "is-builtin-module": "^3.2.0", + "jsesc": "^3.0.2", + "lodash": "^4.17.21", + "pluralize": "^8.0.0", + "read-pkg-up": "^7.0.1", + "regexp-tree": "^0.1.24", + "regjsparser": "^0.9.1", + "safe-regex": "^2.1.1", + "semver": "^7.3.8", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=8.28.0" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "dependencies": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/findup-sync/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fined/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/flush-write-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/flush-write-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/flush-write-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formidable": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", + "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==", + "dev": true, + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fs-mkdirp-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/fs-mkdirp-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/fs-mkdirp-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/fs-mkdirp-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fs-mkdirp-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-stream/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-stream/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/glob-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/glob-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/glob-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-watcher/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/glob-watcher/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/glob-watcher/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/glob-watcher/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/glob-watcher/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/glob-watcher/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/glob-watcher/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/glob-watcher/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", + "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", + "dev": true, + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "dev": true + }, + "node_modules/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "dependencies": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/gulp-cli/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/gulp-cli/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/gulp-cli/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/gulp-cli/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "node_modules/gulp-cli/node_modules/yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "node_modules/gulp-cli/node_modules/yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + }, + "node_modules/gulp-esbuild": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/gulp-esbuild/-/gulp-esbuild-0.12.0.tgz", + "integrity": "sha512-6el2YFJK+Wiip18G4iMl1rNuetSxpEZTLT1e6GuAsi3Q/yaeoNUgTX7nlwpbFkymGXMI4NFXisg5++PMe+fNNA==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.6", + "plugin-error": "^2.0.1", + "vinyl": "^3.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/gulp-html-bemlinter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gulp-html-bemlinter/-/gulp-html-bemlinter-4.0.0.tgz", + "integrity": "sha512-gugYlOyvPTDgYKbjzBp/2gk1atCRh/6+VKdZnm6FuVHIVKUv2bgsFpwA2j5XJz9XgcCNlnlHx5g8sFh/BIBtTA==", + "dev": true, + "dependencies": { + "chalk": "^5.3.0", + "node-html-parser": "^6.1.13", + "plugin-error": "^2.0.1", + "through2": "^4.0.2" + }, + "engines": { + "node": "^18.12 || ^20.9" + } + }, + "node_modules/gulp-html-bemlinter/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/gulp-htmlmin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gulp-htmlmin/-/gulp-htmlmin-5.0.1.tgz", + "integrity": "sha512-ASlyDPZOSKjHYUifYV0rf9JPDflN9IRIb8lw2vRqtYMC4ljU3zAmnnaVXwFQ3H+CfXxZSUesZ2x7jrnPJu93jA==", + "dev": true, + "dependencies": { + "html-minifier": "^3.5.20", + "plugin-error": "^1.0.1", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 6.0" + } + }, + "node_modules/gulp-htmlmin/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/gulp-htmlmin/node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-htmlmin/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/gulp-htmlmin/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/gulp-htmlmin/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/gulp-htmlmin/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/gulp-plumber": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/gulp-plumber/-/gulp-plumber-1.2.1.tgz", + "integrity": "sha512-mctAi9msEAG7XzW5ytDVZ9PxWMzzi1pS2rBH7lA095DhMa6KEXjm+St0GOCc567pJKJ/oCvosVAZEpAey0q2eQ==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "fancy-log": "^1.3.2", + "plugin-error": "^0.1.2", + "through2": "^2.0.3" + }, + "engines": { + "node": ">=0.10", + "npm": ">=1.2.10" + } + }, + "node_modules/gulp-plumber/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha512-OQwDZUqYaQwyyhDJHThmzId8daf4/RFNLaeh3AevmSeZ5Y7ug4Ga/yKc6l6kTZOBW781rCj103ZuTh8GAsB3+Q==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha512-t5db90jq+qdgk8aFnxEkjqta0B/GHrM1pxzuuZz2zWsOXc5nKu3t+76s/PQBA8FTcM/ipspIH9jWG4OxCBc2eA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/gulp-plumber/node_modules/extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha512-L7AGmkO6jhDkEBBGWlLtftA80Xq8DipnrRPr0pyi7GQLXkaq9JYA4xF4z6qnadIC6euiTDKco0cGSU9muw+WTw==", + "dev": true, + "dependencies": { + "kind-of": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/gulp-plumber/node_modules/kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha512-aUH6ElPnMGon2/YkxRIigV32MOpTVcoXQ1Oo8aYn40s+sJ3j+0gFZsT8HKDcxNy7Fi9zuquWtGaGAahOdv5p/g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha512-WzZHcm4+GO34sjFMxQMqZbsz3xiNEgonCskQ9v+IroMmYgk/tas8dG+Hr2D6IbRPybZ12oWpzE/w3cGJ6FJzOw==", + "dev": true, + "dependencies": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/gulp-plumber/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/gulp-plumber/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/gulp-plumber/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-plumber/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/gulp-plumber/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/gulp-postcss": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/gulp-postcss/-/gulp-postcss-10.0.0.tgz", + "integrity": "sha512-z1RF2RJEX/BvFsKN11PXai8lRmihZTiHnlJf7Zu8uHaA/Q7Om4IeN8z1NtMAW5OiLwUY02H0DIFl9tHl0CNSgA==", + "dev": true, + "dependencies": { + "fancy-log": "^2.0.0", + "plugin-error": "^2.0.1", + "postcss-load-config": "^5.0.0", + "vinyl-sourcemaps-apply": "^0.2.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/gulp-postcss/node_modules/fancy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-2.0.0.tgz", + "integrity": "sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==", + "dev": true, + "dependencies": { + "color-support": "^1.1.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gulp-sass": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-5.1.0.tgz", + "integrity": "sha512-7VT0uaF+VZCmkNBglfe1b34bxn/AfcssquLKVDYnCDJ3xNBaW7cUuI3p3BQmoKcoKFrs9jdzUxyb+u+NGfL4OQ==", + "dev": true, + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "picocolors": "^1.0.0", + "plugin-error": "^1.0.1", + "replace-ext": "^2.0.0", + "strip-ansi": "^6.0.1", + "vinyl-sourcemaps-apply": "^0.2.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/gulp-sass/node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-sharp-responsive": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/gulp-sharp-responsive/-/gulp-sharp-responsive-0.4.1.tgz", + "integrity": "sha512-eSJzZbO9W+pkRnij1krJFM/DMoxRZTk4ETvEd2+7PQ3ffcrI5tjXkEpgZ+hp+7EHHnEvGwsr79yg3DNxH2hR7Q==", + "dev": true, + "dependencies": { + "image-size": "^1.0.0", + "plugin-error": "^1.0.1", + "rename": "^1.0.4", + "sharp": "^0.28.1", + "through2": "^4.0.2", + "vinyl": "^2.2.1" + } + }, + "node_modules/gulp-sharp-responsive/node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-sharp-responsive/node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-sharp-responsive/node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-stacksvg": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gulp-stacksvg/-/gulp-stacksvg-4.0.0.tgz", + "integrity": "sha512-B4qZ8FHaatrLSt5HEGiRG44rjSped7YbAcN8z2cpGaqY8t8dMZTI0fXEQv1YhFHHxaiMJO+ArBLhxyL0B/XDFA==", + "dev": true, + "dependencies": { + "node-html-parser": "^6.1.13", + "plugin-error": "^2.0.1", + "vinyl": "^3.0.0" + }, + "engines": { + "node": "^18.18.2 || ^20.9.0" + } + }, + "node_modules/gulp-svgmin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gulp-svgmin/-/gulp-svgmin-4.1.0.tgz", + "integrity": "sha512-WKpif+yu3+oIlp1e11CQi5F64YddP699l2mFmxpz8swv8/P8dhxVcMKdCPFWouArlVyn7Ma1eWCJHw5gx4NMtw==", + "dev": true, + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "plugin-error": "^1.0.1", + "svgo": "^2.7.0" + } + }, + "node_modules/gulp-svgmin/node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dev": true, + "dependencies": { + "glogg": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "dependencies": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "bin": { + "html-minifier": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/html-minifier/node_modules/commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "dev": true, + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "dependencies": { + "lodash.isfinite": "^3.3.2" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", + "dev": true + }, + "node_modules/kebabcase": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kebabcase/-/kebabcase-1.0.1.tgz", + "integrity": "sha512-YSP7DnNnodPG0nkHGEICNx5vUl/lOKkryQlILRqRFmcjWFNomEvPhJlpFvE7sop9t2EDfthZssx3nvwTx5ty0w==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/known-css-properties": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.31.0.tgz", + "integrity": "sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==", + "dev": true + }, + "node_modules/last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "dev": true, + "dependencies": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/liftoff/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lightningcss": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.24.1.tgz", + "integrity": "sha512-kUpHOLiH5GB0ERSv4pxqlL0RYKnOXtgGtVe7shDGfhS0AZ4D1ouKFYAcLcZhql8aMspDNzaUCumGHZ78tb2fTg==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.24.1", + "lightningcss-darwin-x64": "1.24.1", + "lightningcss-freebsd-x64": "1.24.1", + "lightningcss-linux-arm-gnueabihf": "1.24.1", + "lightningcss-linux-arm64-gnu": "1.24.1", + "lightningcss-linux-arm64-musl": "1.24.1", + "lightningcss-linux-x64-gnu": "1.24.1", + "lightningcss-linux-x64-musl": "1.24.1", + "lightningcss-win32-x64-msvc": "1.24.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.24.1.tgz", + "integrity": "sha512-1jQ12jBy+AE/73uGQWGSafK5GoWgmSiIQOGhSEXiFJSZxzV+OXIx+a9h2EYHxdJfX864M+2TAxWPWb0Vv+8y4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.24.1.tgz", + "integrity": "sha512-R4R1d7VVdq2mG4igMU+Di8GPf0b64ZLnYVkubYnGG0Qxq1KaXQtAzcLI43EkpnoWvB/kUg8JKCWH4S13NfiLcQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.24.1.tgz", + "integrity": "sha512-z6NberUUw5ALES6Ixn2shmjRRrM1cmEn1ZQPiM5IrZ6xHHL5a1lPin9pRv+w6eWfcrEo+qGG6R9XfJrpuY3e4g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.24.1.tgz", + "integrity": "sha512-NLQLnBQW/0sSg74qLNI8F8QKQXkNg4/ukSTa+XhtkO7v3BnK19TS1MfCbDHt+TTdSgNEBv0tubRuapcKho2EWw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.24.1.tgz", + "integrity": "sha512-AQxWU8c9E9JAjAi4Qw9CvX2tDIPjgzCTrZCSXKELfs4mCwzxRkHh2RCxX8sFK19RyJoJAjA/Kw8+LMNRHS5qEg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.24.1.tgz", + "integrity": "sha512-JCgH/SrNrhqsguUA0uJUM1PvN5+dVuzPIlXcoWDHSv2OU/BWlj2dUYr3XNzEw748SmNZPfl2NjQrAdzaPOn1lA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.24.1.tgz", + "integrity": "sha512-TYdEsC63bHV0h47aNRGN3RiK7aIeco3/keN4NkoSQ5T8xk09KHuBdySltWAvKLgT8JvR+ayzq8ZHnL1wKWY0rw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.24.1.tgz", + "integrity": "sha512-HLfzVik3RToot6pQ2Rgc3JhfZkGi01hFetHt40HrUMoeKitLoqUUT5owM6yTZPTytTUW9ukLBJ1pc3XNMSvlLw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.24.1.tgz", + "integrity": "sha512-joEupPjYJ7PjZtDsS5lzALtlAudAbgIBMGJPNeFe5HfdmJXFd13ECmEM+5rXNxYVMRHua2w8132R6ab5Z6K9Ow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/linthtml-config-htmlacademy": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/linthtml-config-htmlacademy/-/linthtml-config-htmlacademy-1.0.25.tgz", + "integrity": "sha512-0FSaIbOnUWLwkGkr51T7FvH/diNIIi/zu4UM3zhcGX9rlJvesIo7wMU1qqvl5IUzBgH3JTYg7BdaySmN1fIKGg==", + "dev": true, + "dependencies": { + "@linthtml/linthtml": "0.9.6", + "linthtml-rules-htmlacademy": "1.0.21" + } + }, + "node_modules/linthtml-rules-htmlacademy": { + "version": "1.0.21", + "resolved": "https://registry.npmjs.org/linthtml-rules-htmlacademy/-/linthtml-rules-htmlacademy-1.0.21.tgz", + "integrity": "sha512-cnPLjovn5n6KbG6rW/uvofDkfy6lioQN54PSzK34dr0Ge5FnztgRdVcDOjOdkZ11lw1Jy88PWqu2EukWjzJOtg==", + "dev": true + }, + "node_modules/lintspaces": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/lintspaces/-/lintspaces-0.11.0.tgz", + "integrity": "sha512-Zi4UWrpPYcIECWVBRDA4UQA4wiFkEQoD0DYroBIO0jtDAAatdm3vs7MOcps0nSpukf3DiyfHeFhJNL5sLegaLA==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "editorconfig": "^2.0.0", + "minimist": "^1.2.6", + "rc": "^1.2.8" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", + "dev": true + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.pull": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.pull/-/lodash.pull-4.1.0.tgz", + "integrity": "sha512-EM7CVTzXfkTyusQdN7mgGPh2ZfkKfQ5lA9U+X7NNDeEgKEaO65dB5Kh8+Ppap0X1wQOndPjKP/VVTis7hFvkzg==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "dev": true, + "dependencies": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/matchdep/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/matchdep/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nan": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", + "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", + "dev": true, + "optional": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "dev": true, + "dependencies": { + "semver": "^5.4.1" + } + }, + "node_modules/node-abi/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, + "node_modules/node-html-parser": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz", + "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==", + "dev": true, + "dependencies": { + "css-select": "^5.1.0", + "he": "1.2.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dev": true, + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/ordered-read-streams/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/ordered-read-streams/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/ordered-read-streams/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/ordered-read-streams/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dev": true, + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "dev": true, + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/plugin-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-2.0.1.tgz", + "integrity": "sha512-zMakqvIDyY40xHOvzXka0kUvf40nYIuwRE8dWhti2WtjQZ31xAgBZBhxsK7vK3QbRXS1Xms/LO7B5cuAsfB2Gg==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "dev": true, + "dependencies": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-less": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-6.0.0.tgz", + "integrity": "sha512-FPX16mQLyEjLzEuuJtxA8X3ejDLNGGEG503d2YGZR5Ask1SpDN8KmZUMpzCvyalWRywAn1n1VOA5dcqfCLo5rg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "postcss": "^8.3.5" + } + }, + "node_modules/postcss-lightningcss": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-lightningcss/-/postcss-lightningcss-1.0.0.tgz", + "integrity": "sha512-sLNRVh+DINZHf5b31KUZnv3w4sf/CEdmvYP5JWzyyB8++E6WdaE7yxsrhfXiUFqISNBXcSrKfAF/MtTZrYAlbg==", + "dev": true, + "dependencies": { + "browserslist": "^4.19.1", + "lightningcss": "^1.22.0" + }, + "engines": { + "node": "^16.0.0 || ^18.0.0 || >= 20", + "npm": ">=7.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-load-config": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.0.3.tgz", + "integrity": "sha512-90pBBI5apUVruIEdCxZic93Wm+i9fTrp7TXbgdUCH+/L+2WnfpITSpq5dFU/IPvbv7aNiMlQISpUkAm3fEcvgQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", + "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", + "dev": true + }, + "node_modules/postcss-safe-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz", + "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-scss": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-url": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz", + "integrity": "sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==", + "dev": true, + "dependencies": { + "make-dir": "~3.1.0", + "mime": "~2.5.2", + "minimatch": "~3.0.4", + "xxhashjs": "~0.2.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-url/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prebuild-install": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", + "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.21.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dev": true, + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dev": true, + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-bom-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/remove-bom-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/remove-bom-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/remove-bom-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/remove-bom-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "node_modules/rename": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/rename/-/rename-1.0.4.tgz", + "integrity": "sha512-YMM6Fn3lrFOCjhORKjj+z/yizj8WSzv3F3YUlpJA20fteWCb0HbJU19nvuRBPUM5dWgxJcHP+kix3M+5NowJyA==", + "dev": true, + "dependencies": { + "debug": "^2.5.2" + } + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dev": true, + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", + "dev": true, + "dependencies": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", + "dev": true + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", + "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", + "dev": true, + "dependencies": { + "regexp-tree": "~0.1.1" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass": { + "version": "1.77.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.4.tgz", + "integrity": "sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass/node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "dev": true + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "dev": true, + "dependencies": { + "sver-compat": "^1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/send/node_modules/mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true, + "bin": { + "mime": "cli.js" + } + }, + "node_modules/send/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/send/node_modules/statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sharp": { + "version": "0.28.3", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.28.3.tgz", + "integrity": "sha512-21GEP45Rmr7q2qcmdnjDkNP04Ooh5v0laGS5FDpojOO84D1DJwUijLiSq8XNNM6e8aGXYtoYRh3sVNdm8NodMA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "color": "^3.1.3", + "detect-libc": "^1.0.3", + "node-addon-api": "^3.2.0", + "prebuild-install": "^6.1.2", + "semver": "^7.3.5", + "simple-get": "^3.1.0", + "tar-fs": "^2.1.1", + "tunnel-agent": "^0.6.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dev": true, + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/socket.io": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", + "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", + "dev": true, + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.11.0" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-adapter/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/socket.io-client": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-client/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "dev": true + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true + }, + "node_modules/stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "dev": true, + "dependencies": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + }, + "bin": { + "throttleproxy": "bin/throttleproxy.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/stream-throttle/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/streamx": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", + "dev": true, + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", + "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", + "dev": true + }, + "node_modules/stylelint": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.6.1.tgz", + "integrity": "sha512-yNgz2PqWLkhH2hw6X9AweV9YvoafbAD5ZsFdKN9BvSDVwGvPh+AUIrn7lYwy1S7IHmtFin75LLfX1m0D2tHu8Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "dependencies": { + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/media-query-list-parser": "^2.1.11", + "@csstools/selector-specificity": "^3.1.1", + "@dual-bundle/import-meta-resolve": "^4.1.0", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^9.0.0", + "css-functions-list": "^3.2.2", + "css-tree": "^2.3.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^9.0.0", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^5.3.1", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.31.0", + "mathml-tag-names": "^2.1.3", + "meow": "^13.2.0", + "micromatch": "^4.0.7", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.1", + "postcss": "^8.4.38", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^7.0.0", + "postcss-selector-parser": "^6.1.0", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^7.1.0", + "supports-hyperlinks": "^3.0.0", + "svg-tags": "^1.0.0", + "table": "^6.8.2", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/stylelint-config-htmlacademy": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/stylelint-config-htmlacademy/-/stylelint-config-htmlacademy-4.2.3.tgz", + "integrity": "sha512-5/kfFaEiWOWMGiSqTxjP7mOqhnXV78+FCaqQmqhF1E0toVfnkRTdPcjMXisVtCvOjL085j0ETySS33s8LtpS8w==", + "dev": true, + "dependencies": { + "@stylistic/stylelint-plugin": "2.1.2", + "postcss-less": "6.0.0", + "postcss-scss": "4.0.9" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.1.0" + } + }, + "node_modules/stylelint/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/stylelint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true + }, + "node_modules/stylelint/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/stylelint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz", + "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==", + "dev": true, + "dependencies": { + "flat-cache": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/stylelint/node_modules/flat-cache": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", + "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "dev": true, + "dependencies": { + "flatted": "^3.3.1", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/stylelint/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/stylelint/node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/stylelint/node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/stylelint/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/superagent": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz", + "integrity": "sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==", + "dev": true, + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^3.5.1", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/superagent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/superagent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "dev": true, + "dependencies": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/svgo/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table-layout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.1.tgz", + "integrity": "sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q==", + "dev": true, + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, + "dependencies": { + "streamx": "^2.12.5" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/through2-filter/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/through2-filter/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2-filter/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/through2-filter/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/through2-filter/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-regex/node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dev": true, + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/to-through/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/to-through/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/to-through/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/to-through/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/to-through/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "dependencies": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-js/node_modules/commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker/node_modules/fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", + "dev": true + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "dev": true, + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/vinyl-fs/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/vinyl-fs/node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/vinyl-fs/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/vinyl-fs/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/vinyl-fs/node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dev": true, + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vinyl-sourcemap/node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "dev": true, + "dependencies": { + "source-map": "^0.5.1" + } + }, + "node_modules/vinyl-sourcemaps-apply/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-html-validator": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/w3c-html-validator/-/w3c-html-validator-1.8.1.tgz", + "integrity": "sha512-XZrlcAv4hcpSU+zphq+uvypjydekQbIuewvcU2y7xIfFJHsp50tUihIJpfuhYYIhUgXvbNNGQh+g8O8gEL4kjw==", + "dev": true, + "dependencies": { + "chalk": "~5.3", + "cli-argv-util": "~1.2", + "fancy-log": "~2.0", + "glob": "~10.3", + "slash": "~5.1", + "superagent": "~9.0" + }, + "bin": { + "html-validator": "bin/cli.js", + "w3c-html-validator": "bin/cli.js" + } + }, + "node_modules/w3c-html-validator/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/w3c-html-validator/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/w3c-html-validator/node_modules/fancy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-2.0.0.tgz", + "integrity": "sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==", + "dev": true, + "dependencies": { + "color-support": "^1.1.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/w3c-html-validator/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/w3c-html-validator/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", + "dev": true + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "dependencies": { + "cuint": "^0.2.2" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..21b254a --- /dev/null +++ b/package.json @@ -0,0 +1,58 @@ +{ + "name": "htmlacademy-gulp-template", + "version": "2.0.6", + "private": true, + "type": "module", + "engines": { + "node": "^18.18 || ^20.9" + }, + "browserslist": [ + "last 2 versions", + "not dead", + "not op_mini all", + "not and_uc > 0", + "not < 0.2%" + ], + "scripts": { + "start": "gulp runDev", + "build": "gulp buildProd", + "preview": "npm run build && browser-sync start -s build/ --cors --no-notify --no-ui", + "lint": "npm-run-all -pc lint:**", + "lint:spaces": "ec --exclude vendor/*", + "lint:markup": "cd source && html-validator --quiet", + "lint:html": "linthtml source/**/*.html --config .linthtmlrc", + "lint:bem": "gulp lintBem --silent", + "lint:styles": "stylelint \"source/styles/**/*.scss\"", + "lint:scripts": "eslint . --ignore-path .gitignore --ignore-pattern vendor/", + "optimize": "npm-run-all -p optimize:**", + "optimize:raster": "gulp optimizeRaster", + "optimize:vector": "gulp optimizeVector" + }, + "devDependencies": { + "@htmlacademy/editorconfig-cli": "3.0.0", + "@linthtml/linthtml": "0.9.6", + "browser-sync": "3.0.2", + "browserslist-to-esbuild": "2.1.1", + "eslint": "8.57.0", + "eslint-config-htmlacademy": "10.0.1", + "gulp": "4.0.2", + "gulp-esbuild": "0.12.0", + "gulp-html-bemlinter": "4.0.0", + "gulp-htmlmin": "5.0.1", + "gulp-plumber": "1.2.1", + "gulp-postcss": "10.0.0", + "gulp-sass": "5.1.0", + "gulp-sharp-responsive": "0.4.1", + "gulp-stacksvg": "4.0.0", + "gulp-svgmin": "4.1.0", + "linthtml-config-htmlacademy": "1.0.25", + "npm-run-all": "4.1.5", + "postcss": "8.4.38", + "postcss-lightningcss": "1.0.0", + "postcss-url": "10.1.3", + "sass": "1.77.4", + "stylelint": "16.6.1", + "stylelint-config-htmlacademy": "4.2.3", + "w3c-html-validator": "1.8.1" + } +} diff --git a/raw/icons/README.md b/raw/icons/README.md new file mode 100644 index 0000000..ea70586 --- /dev/null +++ b/raw/icons/README.md @@ -0,0 +1,3 @@ +# Папка для оригиналов иконок + +Сюда нужно скидывать неоптимизированные svg-иконки. Для каждой из них запуск команды `npm run optimize:vector` создат в `source/icons` оптимизированную копию. diff --git a/raw/images/README.md b/raw/images/README.md new file mode 100644 index 0000000..06f406e --- /dev/null +++ b/raw/images/README.md @@ -0,0 +1,17 @@ +# Папка для оригиналов изображений + +Сюда нужно скидывать неоптимизированные: + +1. контентные `svg` (не иконки), например логотип. +2. `png` и `jpg` двойной плотности пикселей. + +Для каждого растрового изображения в этой папке запуск команды `npm run optimize` создат в `source/images`: + +- оптимизированную копию с суффиксом `@2x`, +- оптимизированную уменьшенную в 2 раза копию с суффиксом `@1x`, +- копию в прогрессивном формате `webp` с суффиксом `@2x`, +- уменьшенную в 2 раза копию в формате `webp` с суффиксом `@1x`. + +Эта же команда создаст оптимизированную копию каждого векторного изображения. Или можно запускать отдельно для растра `npm run optimize:raster` и отдельно для вектора `npm run optimize:vector`. + +После оптимизации оригиналы можно удалить, чтобы повторный запуск для новых изображений не генерировал заново уже имеющиеся файлы. diff --git a/source/favicon.ico b/source/favicon.ico new file mode 100644 index 0000000..f4988cd Binary files /dev/null and b/source/favicon.ico differ diff --git a/source/favicons/README.md b/source/favicons/README.md new file mode 100644 index 0000000..21c8243 --- /dev/null +++ b/source/favicons/README.md @@ -0,0 +1,12 @@ +# Папка для фавиконок + +Здесь должны находиться все необходимые варианты фавиконок, кроме `favicon.ico`, который должен быть в `source/`. + +```shell +└── source/ + └── favicons/ + ├── 180.png # для старых iPhone + ├── 192.png + ├── 512.png + └── icon.svg +``` diff --git a/source/favicons/supergym-apple-favicon-180x180.png b/source/favicons/supergym-apple-favicon-180x180.png new file mode 100644 index 0000000..fe026c9 Binary files /dev/null and b/source/favicons/supergym-apple-favicon-180x180.png differ diff --git a/source/favicons/supergym-favicon-32x32.png b/source/favicons/supergym-favicon-32x32.png new file mode 100644 index 0000000..23f2016 Binary files /dev/null and b/source/favicons/supergym-favicon-32x32.png differ diff --git a/source/favicons/supergym-favicon.svg b/source/favicons/supergym-favicon.svg new file mode 100644 index 0000000..acd4874 --- /dev/null +++ b/source/favicons/supergym-favicon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/source/favicons/supergym-icon180.png b/source/favicons/supergym-icon180.png new file mode 100644 index 0000000..fe026c9 Binary files /dev/null and b/source/favicons/supergym-icon180.png differ diff --git a/source/favicons/supergym-icon192.png b/source/favicons/supergym-icon192.png new file mode 100644 index 0000000..683ec63 Binary files /dev/null and b/source/favicons/supergym-icon192.png differ diff --git a/source/favicons/supergym-icon256.png b/source/favicons/supergym-icon256.png new file mode 100644 index 0000000..c45f921 Binary files /dev/null and b/source/favicons/supergym-icon256.png differ diff --git a/source/favicons/supergym-icon512.png b/source/favicons/supergym-icon512.png new file mode 100644 index 0000000..bac16a7 Binary files /dev/null and b/source/favicons/supergym-icon512.png differ diff --git a/source/fonts/README.md b/source/fonts/README.md new file mode 100644 index 0000000..fb1d069 --- /dev/null +++ b/source/fonts/README.md @@ -0,0 +1,47 @@ +# Папка для шрифтов + +```shell +└── source/ + └── fonts/ + ├── pt-sans-400.woff2 + └── pt-sans-700.woff2 +``` + +Если в проекте используется несколько шрифтов, то для каждого семейства можно использовать отдельную папку: + +```shell +└── source/ + └── fonts/ + ├── pt-sans/ + │ ├── pt-sans-bold.woff2 + │ └── pt-sans-bold.woff + └── tt-norms/ + ├── tt-norms-regular.woff2 + └── tt-norms-regular.woff +``` + +## Пример подключения шрифтов + +В стилевом файле подключения шрифтов пути должны быть валидными для исходников (как подсказывает редактор): + +```scss +@font-face { + font-family: "Raleway"; + font-weight: 400; + font-style: normal; + font-display: swap; + src: url("../../fonts/raleway-400.woff2") format("woff2"), +} +``` + +Сборка сама исправит эти пути на валидные для билда: + +```css +@font-face { + font-family: "Raleway"; + font-weight: 400; + font-style: normal; + font-display: swap; + src: url("../fonts/raleway-400.woff2") format("woff2"), +} +``` diff --git a/source/fonts/alumni-sans-extra-bold.woff2 b/source/fonts/alumni-sans-extra-bold.woff2 new file mode 100644 index 0000000..00cab50 Binary files /dev/null and b/source/fonts/alumni-sans-extra-bold.woff2 differ diff --git a/source/fonts/alumni-sans-semi-bold.woff2 b/source/fonts/alumni-sans-semi-bold.woff2 new file mode 100644 index 0000000..a2f46a6 Binary files /dev/null and b/source/fonts/alumni-sans-semi-bold.woff2 differ diff --git a/source/fonts/roboto-condensed-bold.woff2 b/source/fonts/roboto-condensed-bold.woff2 new file mode 100644 index 0000000..666ef2c Binary files /dev/null and b/source/fonts/roboto-condensed-bold.woff2 differ diff --git a/source/fonts/roboto-condensed-light.woff2 b/source/fonts/roboto-condensed-light.woff2 new file mode 100644 index 0000000..8fb8326 Binary files /dev/null and b/source/fonts/roboto-condensed-light.woff2 differ diff --git a/source/fonts/roboto-condensed-regular.woff2 b/source/fonts/roboto-condensed-regular.woff2 new file mode 100644 index 0000000..ddfeeea Binary files /dev/null and b/source/fonts/roboto-condensed-regular.woff2 differ diff --git a/source/icons/README.md b/source/icons/README.md new file mode 100644 index 0000000..15b1126 --- /dev/null +++ b/source/icons/README.md @@ -0,0 +1,47 @@ +# Папка для оптимизированных векторных иконок + +```shell +└── source/ + └── icons/ + ├── tg.svg + ├── vk.svg + └── yt.svg +``` + +Находящиеся здесь иконки станут одним спрайтом: + +```shell +└── build/ + └── icons/ # папка для спрайта + └── stack.svg # спрайт +``` + +## Пример подключения иконки + +В файле БЭМ-блока путь должен быть валидным для исходников (как подсказывает редактор): + +```scss +.search { + &::before { + content: ""; + width: 44px; + height: 44px; + display: block; + background: #444444; + mask-image: url("../../icons/search.svg"); + } +} +``` + +Сборка сама исправит этот путь на валидный для билда путь до фрагмента стек-спрайта: + +```css +.search::before { + content: ""; + width: 44px; + height: 44px; + display: block; + background: #444444; + mask-image: url("../icons/stack.svg#search"); +} +``` diff --git a/source/icons/abonements-rub.svg b/source/icons/abonements-rub.svg new file mode 100644 index 0000000..8cc28cc --- /dev/null +++ b/source/icons/abonements-rub.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/icons/button-play-triangle.svg b/source/icons/button-play-triangle.svg new file mode 100644 index 0000000..431f006 --- /dev/null +++ b/source/icons/button-play-triangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/icons/footer-social-odnoklassniki.svg b/source/icons/footer-social-odnoklassniki.svg new file mode 100644 index 0000000..60288b3 --- /dev/null +++ b/source/icons/footer-social-odnoklassniki.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/icons/footer-social-reddit.svg b/source/icons/footer-social-reddit.svg new file mode 100644 index 0000000..51935b4 --- /dev/null +++ b/source/icons/footer-social-reddit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/icons/footer-social-vk.svg b/source/icons/footer-social-vk.svg new file mode 100644 index 0000000..1cd7cc8 --- /dev/null +++ b/source/icons/footer-social-vk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/icons/swiper-arrow.svg b/source/icons/swiper-arrow.svg new file mode 100644 index 0000000..b952adc --- /dev/null +++ b/source/icons/swiper-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/images/README.md b/source/images/README.md new file mode 100644 index 0000000..62add79 --- /dev/null +++ b/source/images/README.md @@ -0,0 +1,55 @@ +# Папка для отимизированных изображений + +```shell +└── source/ + └── images/ + ├── hero@1x.jpg + ├── hero@1x.webp + ├── hero@2x.jpg + ├── hero@2x.webp + └── logo.svg +``` + +Отсюда файлы изображений при продакшен-сборке без изменений попадают в `build/images/`: + +```shell +└── build/ + └── images/ + ├── hero@1x.jpg + ├── hero@1x.webp + ├── hero@2x.jpg + ├── hero@2x.webp + └── logo.svg +``` + +При дев-сборке изображения не копируются в `build/images/`, сервер их забирает из `source/images/` + +## Пример подключения изображения + +В стилевом файле БЭМ-блока пути должны быть валидными для исходников (как подсказывает редактор): + +```scss +.hero { + background-image: + image-set( + url("../../images/hero@1x.webp") 1x type("image/webp"), + url("../../images/hero@2x.webp") 2x type("image/webp"), + url("../../images/hero@1x.jpg") 1x type("image/jpeg"), + url("../../images/hero@2x.jpg") 2x type("image/jpeg") + ); +} +``` + +Сборка сама исправит эти пути на валидные для билда: + +```css +.hero { + background-image: + image-set( + url("../images/hero@1x.webp") 1x type("image/webp"), + url("../images/hero@2x.webp") 2x type("image/webp"), + url("../images/hero@1x.jpg") 1x type("image/jpeg"), + url("../images/hero@2x.jpg") 2x type("image/jpeg") + ); +} +``` diff --git a/source/images/abonements-bumper-disks-desktop@1x.png b/source/images/abonements-bumper-disks-desktop@1x.png new file mode 100644 index 0000000..906799c Binary files /dev/null and b/source/images/abonements-bumper-disks-desktop@1x.png differ diff --git a/source/images/abonements-bumper-disks-desktop@1x.webp b/source/images/abonements-bumper-disks-desktop@1x.webp new file mode 100644 index 0000000..70a105a Binary files /dev/null and b/source/images/abonements-bumper-disks-desktop@1x.webp differ diff --git a/source/images/abonements-bumper-disks-desktop@2x.png b/source/images/abonements-bumper-disks-desktop@2x.png new file mode 100644 index 0000000..af5f580 Binary files /dev/null and b/source/images/abonements-bumper-disks-desktop@2x.png differ diff --git a/source/images/abonements-bumper-disks-desktop@2x.webp b/source/images/abonements-bumper-disks-desktop@2x.webp new file mode 100644 index 0000000..78ddabd Binary files /dev/null and b/source/images/abonements-bumper-disks-desktop@2x.webp differ diff --git a/source/images/abonements-bumper-disks-tablet@1x.png b/source/images/abonements-bumper-disks-tablet@1x.png new file mode 100644 index 0000000..7b0c8d5 Binary files /dev/null and b/source/images/abonements-bumper-disks-tablet@1x.png differ diff --git a/source/images/abonements-bumper-disks-tablet@1x.webp b/source/images/abonements-bumper-disks-tablet@1x.webp new file mode 100644 index 0000000..824c803 Binary files /dev/null and b/source/images/abonements-bumper-disks-tablet@1x.webp differ diff --git a/source/images/abonements-bumper-disks-tablet@2x.png b/source/images/abonements-bumper-disks-tablet@2x.png new file mode 100644 index 0000000..c9c283b Binary files /dev/null and b/source/images/abonements-bumper-disks-tablet@2x.png differ diff --git a/source/images/abonements-bumper-disks-tablet@2x.webp b/source/images/abonements-bumper-disks-tablet@2x.webp new file mode 100644 index 0000000..637f20e Binary files /dev/null and b/source/images/abonements-bumper-disks-tablet@2x.webp differ diff --git a/source/images/about-gym-desktop@1x.jpg b/source/images/about-gym-desktop@1x.jpg new file mode 100644 index 0000000..f204135 Binary files /dev/null and b/source/images/about-gym-desktop@1x.jpg differ diff --git a/source/images/about-gym-desktop@1x.webp b/source/images/about-gym-desktop@1x.webp new file mode 100644 index 0000000..8fa46b2 Binary files /dev/null and b/source/images/about-gym-desktop@1x.webp differ diff --git a/source/images/about-gym-desktop@2x.jpg b/source/images/about-gym-desktop@2x.jpg new file mode 100644 index 0000000..870e637 Binary files /dev/null and b/source/images/about-gym-desktop@2x.jpg differ diff --git a/source/images/about-gym-desktop@2x.webp b/source/images/about-gym-desktop@2x.webp new file mode 100644 index 0000000..420f56e Binary files /dev/null and b/source/images/about-gym-desktop@2x.webp differ diff --git a/source/images/about-gym-mobile@1x.jpg b/source/images/about-gym-mobile@1x.jpg new file mode 100644 index 0000000..1ebce1e Binary files /dev/null and b/source/images/about-gym-mobile@1x.jpg differ diff --git a/source/images/about-gym-mobile@1x.webp b/source/images/about-gym-mobile@1x.webp new file mode 100644 index 0000000..ec29d0f Binary files /dev/null and b/source/images/about-gym-mobile@1x.webp differ diff --git a/source/images/about-gym-mobile@2x.jpg b/source/images/about-gym-mobile@2x.jpg new file mode 100644 index 0000000..9ac933c Binary files /dev/null and b/source/images/about-gym-mobile@2x.jpg differ diff --git a/source/images/about-gym-mobile@2x.webp b/source/images/about-gym-mobile@2x.webp new file mode 100644 index 0000000..6f62acd Binary files /dev/null and b/source/images/about-gym-mobile@2x.webp differ diff --git a/source/images/about-gym-tablet@1x.jpg b/source/images/about-gym-tablet@1x.jpg new file mode 100644 index 0000000..8b93d62 Binary files /dev/null and b/source/images/about-gym-tablet@1x.jpg differ diff --git a/source/images/about-gym-tablet@1x.webp b/source/images/about-gym-tablet@1x.webp new file mode 100644 index 0000000..9c4697a Binary files /dev/null and b/source/images/about-gym-tablet@1x.webp differ diff --git a/source/images/about-gym-tablet@2x.jpg b/source/images/about-gym-tablet@2x.jpg new file mode 100644 index 0000000..aca7d0c Binary files /dev/null and b/source/images/about-gym-tablet@2x.jpg differ diff --git a/source/images/about-gym-tablet@2x.webp b/source/images/about-gym-tablet@2x.webp new file mode 100644 index 0000000..b245156 Binary files /dev/null and b/source/images/about-gym-tablet@2x.webp differ diff --git a/source/images/coach-desktop@1x.png b/source/images/coach-desktop@1x.png new file mode 100644 index 0000000..70d7188 Binary files /dev/null and b/source/images/coach-desktop@1x.png differ diff --git a/source/images/coach-desktop@1x.webp b/source/images/coach-desktop@1x.webp new file mode 100644 index 0000000..fc1604c Binary files /dev/null and b/source/images/coach-desktop@1x.webp differ diff --git a/source/images/coach-desktop@2x.png b/source/images/coach-desktop@2x.png new file mode 100644 index 0000000..66b74ae Binary files /dev/null and b/source/images/coach-desktop@2x.png differ diff --git a/source/images/coach-desktop@2x.webp b/source/images/coach-desktop@2x.webp new file mode 100644 index 0000000..008728d Binary files /dev/null and b/source/images/coach-desktop@2x.webp differ diff --git a/source/images/coach-tablet@1x.png b/source/images/coach-tablet@1x.png new file mode 100644 index 0000000..6840770 Binary files /dev/null and b/source/images/coach-tablet@1x.png differ diff --git a/source/images/coach-tablet@1x.webp b/source/images/coach-tablet@1x.webp new file mode 100644 index 0000000..6e0705a Binary files /dev/null and b/source/images/coach-tablet@1x.webp differ diff --git a/source/images/coach-tablet@2x.png b/source/images/coach-tablet@2x.png new file mode 100644 index 0000000..996423b Binary files /dev/null and b/source/images/coach-tablet@2x.png differ diff --git a/source/images/coach-tablet@2x.webp b/source/images/coach-tablet@2x.webp new file mode 100644 index 0000000..629ef13 Binary files /dev/null and b/source/images/coach-tablet@2x.webp differ diff --git a/source/images/games-sportsman-desktop@1x.jpg b/source/images/games-sportsman-desktop@1x.jpg new file mode 100644 index 0000000..cc6e87d Binary files /dev/null and b/source/images/games-sportsman-desktop@1x.jpg differ diff --git a/source/images/games-sportsman-desktop@1x.webp b/source/images/games-sportsman-desktop@1x.webp new file mode 100644 index 0000000..d461465 Binary files /dev/null and b/source/images/games-sportsman-desktop@1x.webp differ diff --git a/source/images/games-sportsman-desktop@2x.jpg b/source/images/games-sportsman-desktop@2x.jpg new file mode 100644 index 0000000..3f78392 Binary files /dev/null and b/source/images/games-sportsman-desktop@2x.jpg differ diff --git a/source/images/games-sportsman-desktop@2x.webp b/source/images/games-sportsman-desktop@2x.webp new file mode 100644 index 0000000..eba42d8 Binary files /dev/null and b/source/images/games-sportsman-desktop@2x.webp differ diff --git a/source/images/games-sportsman-mobile@1x.jpg b/source/images/games-sportsman-mobile@1x.jpg new file mode 100644 index 0000000..ffefd6c Binary files /dev/null and b/source/images/games-sportsman-mobile@1x.jpg differ diff --git a/source/images/games-sportsman-mobile@1x.webp b/source/images/games-sportsman-mobile@1x.webp new file mode 100644 index 0000000..0f08f6b Binary files /dev/null and b/source/images/games-sportsman-mobile@1x.webp differ diff --git a/source/images/games-sportsman-mobile@2x.jpg b/source/images/games-sportsman-mobile@2x.jpg new file mode 100644 index 0000000..691afa3 Binary files /dev/null and b/source/images/games-sportsman-mobile@2x.jpg differ diff --git a/source/images/games-sportsman-mobile@2x.webp b/source/images/games-sportsman-mobile@2x.webp new file mode 100644 index 0000000..d282dda Binary files /dev/null and b/source/images/games-sportsman-mobile@2x.webp differ diff --git a/source/images/games-sportsman-tablet@1x.jpg b/source/images/games-sportsman-tablet@1x.jpg new file mode 100644 index 0000000..e892635 Binary files /dev/null and b/source/images/games-sportsman-tablet@1x.jpg differ diff --git a/source/images/games-sportsman-tablet@1x.webp b/source/images/games-sportsman-tablet@1x.webp new file mode 100644 index 0000000..8b1b1fb Binary files /dev/null and b/source/images/games-sportsman-tablet@1x.webp differ diff --git a/source/images/games-sportsman-tablet@2x.jpg b/source/images/games-sportsman-tablet@2x.jpg new file mode 100644 index 0000000..1cc9915 Binary files /dev/null and b/source/images/games-sportsman-tablet@2x.jpg differ diff --git a/source/images/games-sportsman-tablet@2x.webp b/source/images/games-sportsman-tablet@2x.webp new file mode 100644 index 0000000..ce8495f Binary files /dev/null and b/source/images/games-sportsman-tablet@2x.webp differ diff --git a/source/images/juri-aleksandr@1x.jpg b/source/images/juri-aleksandr@1x.jpg new file mode 100644 index 0000000..4827ce9 Binary files /dev/null and b/source/images/juri-aleksandr@1x.jpg differ diff --git a/source/images/juri-aleksandr@1x.webp b/source/images/juri-aleksandr@1x.webp new file mode 100644 index 0000000..a77a11b Binary files /dev/null and b/source/images/juri-aleksandr@1x.webp differ diff --git a/source/images/juri-aleksandr@2x.jpg b/source/images/juri-aleksandr@2x.jpg new file mode 100644 index 0000000..2687bbd Binary files /dev/null and b/source/images/juri-aleksandr@2x.jpg differ diff --git a/source/images/juri-aleksandr@2x.webp b/source/images/juri-aleksandr@2x.webp new file mode 100644 index 0000000..01a41ea Binary files /dev/null and b/source/images/juri-aleksandr@2x.webp differ diff --git a/source/images/juri-aleksey@1x.jpg b/source/images/juri-aleksey@1x.jpg new file mode 100644 index 0000000..e0666c8 Binary files /dev/null and b/source/images/juri-aleksey@1x.jpg differ diff --git a/source/images/juri-aleksey@1x.webp b/source/images/juri-aleksey@1x.webp new file mode 100644 index 0000000..17edd9f Binary files /dev/null and b/source/images/juri-aleksey@1x.webp differ diff --git a/source/images/juri-aleksey@2x.jpg b/source/images/juri-aleksey@2x.jpg new file mode 100644 index 0000000..a45efbd Binary files /dev/null and b/source/images/juri-aleksey@2x.jpg differ diff --git a/source/images/juri-aleksey@2x.webp b/source/images/juri-aleksey@2x.webp new file mode 100644 index 0000000..6950b76 Binary files /dev/null and b/source/images/juri-aleksey@2x.webp differ diff --git a/source/images/juri-anna@1x.jpg b/source/images/juri-anna@1x.jpg new file mode 100644 index 0000000..3af3f39 Binary files /dev/null and b/source/images/juri-anna@1x.jpg differ diff --git a/source/images/juri-anna@1x.webp b/source/images/juri-anna@1x.webp new file mode 100644 index 0000000..db7a4b2 Binary files /dev/null and b/source/images/juri-anna@1x.webp differ diff --git a/source/images/juri-anna@2x.jpg b/source/images/juri-anna@2x.jpg new file mode 100644 index 0000000..c3a4bdb Binary files /dev/null and b/source/images/juri-anna@2x.jpg differ diff --git a/source/images/juri-anna@2x.webp b/source/images/juri-anna@2x.webp new file mode 100644 index 0000000..e031ab7 Binary files /dev/null and b/source/images/juri-anna@2x.webp differ diff --git a/source/images/juri-mary@1x.jpg b/source/images/juri-mary@1x.jpg new file mode 100644 index 0000000..949a708 Binary files /dev/null and b/source/images/juri-mary@1x.jpg differ diff --git a/source/images/juri-mary@1x.webp b/source/images/juri-mary@1x.webp new file mode 100644 index 0000000..4396d4a Binary files /dev/null and b/source/images/juri-mary@1x.webp differ diff --git a/source/images/juri-mary@2x.jpg b/source/images/juri-mary@2x.jpg new file mode 100644 index 0000000..c9857c4 Binary files /dev/null and b/source/images/juri-mary@2x.jpg differ diff --git a/source/images/juri-mary@2x.webp b/source/images/juri-mary@2x.webp new file mode 100644 index 0000000..448ff8d Binary files /dev/null and b/source/images/juri-mary@2x.webp differ diff --git a/source/images/offers-woman-desktop@1x.jpg b/source/images/offers-woman-desktop@1x.jpg new file mode 100644 index 0000000..52a848a Binary files /dev/null and b/source/images/offers-woman-desktop@1x.jpg differ diff --git a/source/images/offers-woman-desktop@1x.webp b/source/images/offers-woman-desktop@1x.webp new file mode 100644 index 0000000..0d87610 Binary files /dev/null and b/source/images/offers-woman-desktop@1x.webp differ diff --git a/source/images/offers-woman-desktop@2x.jpg b/source/images/offers-woman-desktop@2x.jpg new file mode 100644 index 0000000..42f43d6 Binary files /dev/null and b/source/images/offers-woman-desktop@2x.jpg differ diff --git a/source/images/offers-woman-desktop@2x.webp b/source/images/offers-woman-desktop@2x.webp new file mode 100644 index 0000000..f0559a5 Binary files /dev/null and b/source/images/offers-woman-desktop@2x.webp differ diff --git a/source/images/offers-woman-mobile@1x.jpg b/source/images/offers-woman-mobile@1x.jpg new file mode 100644 index 0000000..3495110 Binary files /dev/null and b/source/images/offers-woman-mobile@1x.jpg differ diff --git a/source/images/offers-woman-mobile@1x.webp b/source/images/offers-woman-mobile@1x.webp new file mode 100644 index 0000000..b3b2442 Binary files /dev/null and b/source/images/offers-woman-mobile@1x.webp differ diff --git a/source/images/offers-woman-mobile@2x.jpg b/source/images/offers-woman-mobile@2x.jpg new file mode 100644 index 0000000..5f18282 Binary files /dev/null and b/source/images/offers-woman-mobile@2x.jpg differ diff --git a/source/images/offers-woman-mobile@2x.webp b/source/images/offers-woman-mobile@2x.webp new file mode 100644 index 0000000..dd7b7e4 Binary files /dev/null and b/source/images/offers-woman-mobile@2x.webp differ diff --git a/source/images/offers-woman-tablet@1x.jpg b/source/images/offers-woman-tablet@1x.jpg new file mode 100644 index 0000000..5d1671f Binary files /dev/null and b/source/images/offers-woman-tablet@1x.jpg differ diff --git a/source/images/offers-woman-tablet@1x.webp b/source/images/offers-woman-tablet@1x.webp new file mode 100644 index 0000000..3a28fd1 Binary files /dev/null and b/source/images/offers-woman-tablet@1x.webp differ diff --git a/source/images/offers-woman-tablet@2x.jpg b/source/images/offers-woman-tablet@2x.jpg new file mode 100644 index 0000000..b150035 Binary files /dev/null and b/source/images/offers-woman-tablet@2x.jpg differ diff --git a/source/images/offers-woman-tablet@2x.webp b/source/images/offers-woman-tablet@2x.webp new file mode 100644 index 0000000..e5d653a Binary files /dev/null and b/source/images/offers-woman-tablet@2x.webp differ diff --git a/source/images/reviews-alina-mobile@1x.jpg b/source/images/reviews-alina-mobile@1x.jpg new file mode 100644 index 0000000..952ab42 Binary files /dev/null and b/source/images/reviews-alina-mobile@1x.jpg differ diff --git a/source/images/reviews-alina-mobile@1x.webp b/source/images/reviews-alina-mobile@1x.webp new file mode 100644 index 0000000..01229d2 Binary files /dev/null and b/source/images/reviews-alina-mobile@1x.webp differ diff --git a/source/images/reviews-alina-mobile@2x.jpg b/source/images/reviews-alina-mobile@2x.jpg new file mode 100644 index 0000000..3956943 Binary files /dev/null and b/source/images/reviews-alina-mobile@2x.jpg differ diff --git a/source/images/reviews-alina-mobile@2x.webp b/source/images/reviews-alina-mobile@2x.webp new file mode 100644 index 0000000..d602e55 Binary files /dev/null and b/source/images/reviews-alina-mobile@2x.webp differ diff --git a/source/images/reviews-alina-tablet-desktop@1x.jpg b/source/images/reviews-alina-tablet-desktop@1x.jpg new file mode 100644 index 0000000..982c019 Binary files /dev/null and b/source/images/reviews-alina-tablet-desktop@1x.jpg differ diff --git a/source/images/reviews-alina-tablet-desktop@1x.webp b/source/images/reviews-alina-tablet-desktop@1x.webp new file mode 100644 index 0000000..c5f2461 Binary files /dev/null and b/source/images/reviews-alina-tablet-desktop@1x.webp differ diff --git a/source/images/reviews-alina-tablet-desktop@2x.jpg b/source/images/reviews-alina-tablet-desktop@2x.jpg new file mode 100644 index 0000000..966d5f5 Binary files /dev/null and b/source/images/reviews-alina-tablet-desktop@2x.jpg differ diff --git a/source/images/reviews-alina-tablet-desktop@2x.webp b/source/images/reviews-alina-tablet-desktop@2x.webp new file mode 100644 index 0000000..69085f8 Binary files /dev/null and b/source/images/reviews-alina-tablet-desktop@2x.webp differ diff --git a/source/images/reviews-anna-mobile@1x.jpg b/source/images/reviews-anna-mobile@1x.jpg new file mode 100644 index 0000000..a8219fb Binary files /dev/null and b/source/images/reviews-anna-mobile@1x.jpg differ diff --git a/source/images/reviews-anna-mobile@1x.webp b/source/images/reviews-anna-mobile@1x.webp new file mode 100644 index 0000000..d64c6ec Binary files /dev/null and b/source/images/reviews-anna-mobile@1x.webp differ diff --git a/source/images/reviews-anna-mobile@2x.jpg b/source/images/reviews-anna-mobile@2x.jpg new file mode 100644 index 0000000..0b4258b Binary files /dev/null and b/source/images/reviews-anna-mobile@2x.jpg differ diff --git a/source/images/reviews-anna-mobile@2x.webp b/source/images/reviews-anna-mobile@2x.webp new file mode 100644 index 0000000..5ecb6cf Binary files /dev/null and b/source/images/reviews-anna-mobile@2x.webp differ diff --git a/source/images/reviews-anna-tablet-desktop@1x.jpg b/source/images/reviews-anna-tablet-desktop@1x.jpg new file mode 100644 index 0000000..ef808aa Binary files /dev/null and b/source/images/reviews-anna-tablet-desktop@1x.jpg differ diff --git a/source/images/reviews-anna-tablet-desktop@1x.webp b/source/images/reviews-anna-tablet-desktop@1x.webp new file mode 100644 index 0000000..b51dbd4 Binary files /dev/null and b/source/images/reviews-anna-tablet-desktop@1x.webp differ diff --git a/source/images/reviews-anna-tablet-desktop@2x.jpg b/source/images/reviews-anna-tablet-desktop@2x.jpg new file mode 100644 index 0000000..ee07521 Binary files /dev/null and b/source/images/reviews-anna-tablet-desktop@2x.jpg differ diff --git a/source/images/reviews-anna-tablet-desktop@2x.webp b/source/images/reviews-anna-tablet-desktop@2x.webp new file mode 100644 index 0000000..ba67825 Binary files /dev/null and b/source/images/reviews-anna-tablet-desktop@2x.webp differ diff --git a/source/images/reviews-sofia-mobile@1x.jpg b/source/images/reviews-sofia-mobile@1x.jpg new file mode 100644 index 0000000..0109472 Binary files /dev/null and b/source/images/reviews-sofia-mobile@1x.jpg differ diff --git a/source/images/reviews-sofia-mobile@1x.webp b/source/images/reviews-sofia-mobile@1x.webp new file mode 100644 index 0000000..feb1f79 Binary files /dev/null and b/source/images/reviews-sofia-mobile@1x.webp differ diff --git a/source/images/reviews-sofia-mobile@2x.jpg b/source/images/reviews-sofia-mobile@2x.jpg new file mode 100644 index 0000000..48dcdcf Binary files /dev/null and b/source/images/reviews-sofia-mobile@2x.jpg differ diff --git a/source/images/reviews-sofia-mobile@2x.webp b/source/images/reviews-sofia-mobile@2x.webp new file mode 100644 index 0000000..fc2cd3f Binary files /dev/null and b/source/images/reviews-sofia-mobile@2x.webp differ diff --git a/source/images/reviews-sofia-tablet-desktop@1x.jpg b/source/images/reviews-sofia-tablet-desktop@1x.jpg new file mode 100644 index 0000000..b9ecb41 Binary files /dev/null and b/source/images/reviews-sofia-tablet-desktop@1x.jpg differ diff --git a/source/images/reviews-sofia-tablet-desktop@1x.webp b/source/images/reviews-sofia-tablet-desktop@1x.webp new file mode 100644 index 0000000..7055a22 Binary files /dev/null and b/source/images/reviews-sofia-tablet-desktop@1x.webp differ diff --git a/source/images/reviews-sofia-tablet-desktop@2x.jpg b/source/images/reviews-sofia-tablet-desktop@2x.jpg new file mode 100644 index 0000000..1dd812b Binary files /dev/null and b/source/images/reviews-sofia-tablet-desktop@2x.jpg differ diff --git a/source/images/reviews-sofia-tablet-desktop@2x.webp b/source/images/reviews-sofia-tablet-desktop@2x.webp new file mode 100644 index 0000000..743ff58 Binary files /dev/null and b/source/images/reviews-sofia-tablet-desktop@2x.webp differ diff --git a/source/images/supergym-logo-desktop.svg b/source/images/supergym-logo-desktop.svg new file mode 100644 index 0000000..f2ead4c --- /dev/null +++ b/source/images/supergym-logo-desktop.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/source/images/supergym-logo-mobile.svg b/source/images/supergym-logo-mobile.svg new file mode 100644 index 0000000..bfe906a --- /dev/null +++ b/source/images/supergym-logo-mobile.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/source/images/supergym-logo-tablet.svg b/source/images/supergym-logo-tablet.svg new file mode 100644 index 0000000..11daf18 --- /dev/null +++ b/source/images/supergym-logo-tablet.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/source/images/video-background-desktop@1x.jpg b/source/images/video-background-desktop@1x.jpg new file mode 100644 index 0000000..35709b3 Binary files /dev/null and b/source/images/video-background-desktop@1x.jpg differ diff --git a/source/images/video-background-desktop@1x.webp b/source/images/video-background-desktop@1x.webp new file mode 100644 index 0000000..61a0738 Binary files /dev/null and b/source/images/video-background-desktop@1x.webp differ diff --git a/source/images/video-background-desktop@2x.jpg b/source/images/video-background-desktop@2x.jpg new file mode 100644 index 0000000..7fc3601 Binary files /dev/null and b/source/images/video-background-desktop@2x.jpg differ diff --git a/source/images/video-background-desktop@2x.webp b/source/images/video-background-desktop@2x.webp new file mode 100644 index 0000000..ad19a19 Binary files /dev/null and b/source/images/video-background-desktop@2x.webp differ diff --git a/source/images/video-background-mobile@1x.jpg b/source/images/video-background-mobile@1x.jpg new file mode 100644 index 0000000..ad17a05 Binary files /dev/null and b/source/images/video-background-mobile@1x.jpg differ diff --git a/source/images/video-background-mobile@1x.webp b/source/images/video-background-mobile@1x.webp new file mode 100644 index 0000000..7e5ae80 Binary files /dev/null and b/source/images/video-background-mobile@1x.webp differ diff --git a/source/images/video-background-mobile@2x.jpg b/source/images/video-background-mobile@2x.jpg new file mode 100644 index 0000000..375f66a Binary files /dev/null and b/source/images/video-background-mobile@2x.jpg differ diff --git a/source/images/video-background-mobile@2x.webp b/source/images/video-background-mobile@2x.webp new file mode 100644 index 0000000..15a4776 Binary files /dev/null and b/source/images/video-background-mobile@2x.webp differ diff --git a/source/images/video-background-tablet@1x.jpg b/source/images/video-background-tablet@1x.jpg new file mode 100644 index 0000000..39c0056 Binary files /dev/null and b/source/images/video-background-tablet@1x.jpg differ diff --git a/source/images/video-background-tablet@1x.webp b/source/images/video-background-tablet@1x.webp new file mode 100644 index 0000000..c4456d7 Binary files /dev/null and b/source/images/video-background-tablet@1x.webp differ diff --git a/source/images/video-background-tablet@2x.jpg b/source/images/video-background-tablet@2x.jpg new file mode 100644 index 0000000..b758dec Binary files /dev/null and b/source/images/video-background-tablet@2x.jpg differ diff --git a/source/images/video-background-tablet@2x.webp b/source/images/video-background-tablet@2x.webp new file mode 100644 index 0000000..92aabe0 Binary files /dev/null and b/source/images/video-background-tablet@2x.webp differ diff --git a/source/index.html b/source/index.html new file mode 100644 index 0000000..66caaa9 --- /dev/null +++ b/source/index.html @@ -0,0 +1,592 @@ + + + + + + + SUPERGYM + + + + + + + + + + + + + +
+
+
+
+ + + + + + 8 800 555-55-55 +
+
+
+
+

Тренажёрный зал Групповые занятия Кардио-зона

+

Омск фитнес центр

+
+ Купить абонемент +
+ + + + + Накаченный тренер в футболке с суперменом. + +
+
+
+
+
+
+

Тренажёрный зал

+

Просторный зал площадью 900 кв/м

+

Supergym – самый большой фитнес центр за Уралом и идеальное место для укрепления тела и здоровья. Тренажёрный зал оснащён всем необходимым современным оборудованием для всех спортсменов.

+

В зале расположены отдельная зона для Crossfit и кардио-зона с 40 тренажёрами. Также в фитнес центре есть несколько оборудованных залов для различных видов групповых занятий.

+
+ +
+
+
+
+

Абонементы

+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+ +
+
+
+
+
+
+

SUPER GAMES

+
+
+

Дата

+ +
+
+

Время

+ +
+
+
+

Ежегодные соревнования по CrossFit

+ заполнить заявку +
+ + + + + + + Накаченный мужчина ударяет по мелу, он разлетается в стороны. + +
+
+
+
+

Жюри

+
+
+
+
+ + + Девушка в бардовом свитшоте с длинными темными волосами. + +
+

Анна Павлова

+

Yoga

+
    +
  • Certified Level 4 Trainer
  • +
  • Титулованный преподаватель по Йоге
  • +
  • Опыт — 10 лет
  • +
+
+
+
+ + + Мужчина в черном лонгсливе с короткими темными волосами. + +
+

Алексей Лавров

+

Powerlifting

+
    +
  • Certified Level 5 Trainer
  • +
  • Кандидат в мастера спорта по Пауэрлифтингу
  • +
  • Опыт — 12 лет
  • +
+
+
+
+ + + Мужчина в майке и очках с короткими темными волосами показывает мышцы. + +
+

Александр Пашков

+

CrossFit

+
    +
  • Certified Level 3 Trainer
  • +
  • Победитель чемпионата России по CrossFit
  • +
  • Опыт — 6 лет
  • +
+
+
+
+ + + Девушка с длинными темными волосами подпирает рукой подбородок и смотрит в камеру. + +
+

Мария Кетова

+

Stretching

+
    +
  • Certified Level 3 Trainer
  • +
  • КМС в художественной гимнастике
  • +
  • Опыт — 15 лет
  • +
+
+
+
+ + + Мужчина в черном лонгсливе с короткими темными волосами. + +
+

Алексей Лавров

+

Powerlifting

+
    +
  • Certified Level 5 Trainer
  • +
  • Кандидат в мастера спорта по Пауэрлифтингу
  • +
  • Опыт — 12 лет
  • +
+
+
+
+ + + Мужчина в майке и очках с короткими темными волосами показывает мышцы. + +
+

Александр Пашков

+

CrossFit

+
    +
  • Certified Level 3 Trainer
  • +
  • Победитель чемпионата России по CrossFit
  • +
  • Опыт — 6 лет
  • +
+
+
+
+ + + Девушка в бардовом свитшоте с длинными темными волосами. + +
+

Анна Павлова

+

Yoga

+
    +
  • Certified Level 4 Trainer
  • +
  • Титулованный преподаватель по Йоге
  • +
  • Опыт — 10 лет
  • +
+
+
+
+ + + Девушка с длинными темными волосами подпирает рукой подбородок и смотрит в камеру. + +
+

Мария Кетова

+

Stretching

+
    +
  • Certified Level 3 Trainer
  • +
  • КМС в художественной гимнастике
  • +
  • Опыт — 15 лет
  • +
+
+
+
+
+
+
+
+
+
+
+
+

Наши преимущества

+
    +
  • +
    + 900 + кв/м +
    +
    +

    Площадь

    +

    Занимайтесь без очередей и толкучки

    +
    +
  • +
  • +
    + 70 + машин +
    +
    +

    Собственная парковка

    +

    Вы всегда найдёте место для своей машины на нашей парковке

    +
    +
  • +
  • + 100 +

    Тренажёров

    +

    Современные тренажёры на все группы мышц

    +
  • +
  • +
    + 350 + мест +
    +
    +

    Комфорт

    +

    Просторные раздевалки, душевые, фен, Wi-Fi, кулеры

    +
    +
  • +
  • +
    + 5+ + лет +
    +
    +

    Тренерский опыт

    +

    Добивайтесь своих целей быстрее с профессиональным тренером

    +
    +
  • +
+
+
+
+
+

Акции

+
+
+
+ Год + 4999 +

Безлимитный абонемент в тренажёрный зал

+ подробнее +
+ + + + + + + Девушка в спортивном костюме на фоне голубого неба. + +
+
+
    +
  • +

    Месяц бесплатно

    +

    Приведи друга, получи абонемент в подарок

    + подробнее +
  • +
  • +

    Скидка 20%

    +

    Корпоративный фитнес с командой

    + подробнее +
  • +
+
+
+
+
+
+
+

Вопросы и ответы

+
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
    +
  • +
    +

    Как стать членом фитнес‑центра?

    + +
    +

    При первом посещении и покупке абонемента, необходимо заполнить анкету и подписать договор. При покупке абонемента онлайн, анкета также заполняется онлайн и договор придёт вам на почту.

    +
  • +
  • +
    +

    Где можно посмотреть расписание?

    + +
    +

    Вы можете ознакомиться с расписание на стойке информации, на нашем официальном сайте. Так же есть возможность оформить подписку на наши новости и получать расписание и обновления на почту каждую неделю.

    +
  • +
  • +
    +

    Есть кулеры в центре? Предоставляются полотенца?

    + +
    +

    В нашем современном спортзале есть кулеры с водой для удобства посетителей. Что касается полотенец, то в спортзале предоставляют их бесплатно, в то время как другие могут взимать дополнительную плату или требовать, чтобы вы принесли свое собственное полотенце.

    +
  • +
  • +
    +

    Сколько тренеров работает в клубе и какова их квалификация?

    + +
    +

    В нашем клубе работает 8 тренеров с обширными квалификациями и направлениями. Посмотреть подробную информацию можно на сайте.

    +
  • +
+
+
+
+
+
+

Отзывы

+
+
+
+
+
+ + + + + Девушка с пучком на голове в спортивном топе. + +
+

Анна Орлова

+

«Хожу в Supergym уже больше года. Нравится, что в клубе всегда чисто, тренажёры обновляют, персонал дружелюбный. Зал просторный, даже в вечернее время нет очередей»

+
+
+
+
+
+ + + + + Девушка с пучком на голове в спортивном топе. + +
+

Алина Михайлова

+

«Самый лучший клуб из всех тех в которых я была! Отличные спортивные направления, залы, оборудование, приветливый персонал, уборка помещений, залов на 1 уровне.

+
+
+
+
+
+ + + + + Девушка с пучком на голове в спортивном топе. + +
+

София Медведева

+

Комфортный, чистый и светлый клуб. Приветливый персонал, удобная парковка. Приятно заниматься, очень много места, люди не мешают друг другу.

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Акции и контакты.

+
+

Бесплатное занятие

+
+
+ + +
+
+ + +
+
+
+ + +
+
+
+
+
+
+

Контакты

+ +
+
+
+
+
+ + + + diff --git a/source/manifest.webmanifest b/source/manifest.webmanifest new file mode 100644 index 0000000..3b38dea --- /dev/null +++ b/source/manifest.webmanifest @@ -0,0 +1,7 @@ +{"icons": [ + { "src": "favicons/supergym-icon180.png", "type": "image/png", "sizes": "180x180" }, + { "src": "favicons/supergym-icon192.png", "type": "image/png", "sizes": "192x192" }, + { "src": "favicons/supergym-icon256.png", "type": "image/png", "sizes": "256x256" }, + { "src": "favicons/supergym-icon512.png", "type": "image/png", "sizes": "512x512" } +] +} diff --git a/source/scripts/README.md b/source/scripts/README.md new file mode 100644 index 0000000..0017e43 --- /dev/null +++ b/source/scripts/README.md @@ -0,0 +1,11 @@ +# Папка для скриптов + +Простые сценарии можно написать в `index.js`, а также есть возможность создать модульную систему для несколько сценариев: + +```shell +└── source/ + └── scripts/ + ├── index.js + ├── modal.js + └── nav.js +``` diff --git a/source/scripts/abonements-price-changer.js b/source/scripts/abonements-price-changer.js new file mode 100644 index 0000000..230c5e8 --- /dev/null +++ b/source/scripts/abonements-price-changer.js @@ -0,0 +1,71 @@ +const AbonementCost = { + oneMonth: { + coachRate: 5000, + daytimeRate: 1700, + fullDayRate: 2700, + }, + sixMonth: { + coachRate: 30000, + daytimeRate: 10200, + fullDayRate: 16200, + }, + twelveMonth: { + coachRate: 60000, + daytimeRate: 20400, + fullDayRate: 32400, + }, +}; + +const ABONEMENTS_TYPE = { + abonementOneMonth: '1 месяц', + abonementSixMonth: '6 месяцев', + abonementTwelveMonth: '12 месяцев' +}; + +const Duration = { + oneMonth: 0, + sixMonth: 1, + twelveMonth: 2, +}; + +const buttons = document.querySelectorAll('.abonements__duration-button'); +const backgroundCost = document.querySelectorAll('.abonements__cost-background'); +const currentCost = document.querySelectorAll('.abonements__cost-current'); + +const AbonementCostArray = [AbonementCost.oneMonth, AbonementCost.sixMonth, AbonementCost.twelveMonth]; + +const CostReplace = (array, currentDuration) => { + array.forEach((element, index) => { + const arr = Object.entries(AbonementCostArray[currentDuration]); + element.innerHTML = arr[index][1]; + }); +}; + +const priceChanger = () => { + buttons.forEach((button) => { + button.addEventListener('click', (evt) => { + buttons.forEach((element) => element.classList.remove('abonements__duration-button--active')); + button.classList.add('abonements__duration-button--active'); + + switch (evt.target.innerHTML) { + case ABONEMENTS_TYPE.abonementOneMonth: + CostReplace(backgroundCost, Duration.oneMonth); + CostReplace(currentCost, Duration.oneMonth); + break; + case ABONEMENTS_TYPE.abonementSixMonth: + CostReplace(backgroundCost, Duration.sixMonth); + CostReplace(currentCost, Duration.sixMonth); + break; + case ABONEMENTS_TYPE.abonementTwelveMonth: + CostReplace(backgroundCost, Duration.twelveMonth); + CostReplace(currentCost, Duration.twelveMonth); + break; + default: + CostReplace(backgroundCost, Duration.oneMonth); + CostReplace(currentCost, Duration.oneMonth); + } + }); + }); +}; + +export { priceChanger }; diff --git a/source/scripts/about-us-video.js b/source/scripts/about-us-video.js new file mode 100644 index 0000000..9cb6192 --- /dev/null +++ b/source/scripts/about-us-video.js @@ -0,0 +1,23 @@ +const videoLink = document.querySelector('.about-us__link'); +const button = document.querySelector('.about-us__play-button'); + +const createIframe = () => { + const iframe = document.createElement('iframe'); + iframe.classList.add('about-us__video'); + iframe.setAttribute('title', 'Видео о нашем спорт зале'); + iframe.setAttribute('src', videoLink.dataset.href); + iframe.setAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share'); + iframe.setAttribute('referrerpolicy', 'strict-origin-when-cross-origin'); + iframe.setAttribute('allowfullscreen', ''); + videoLink.appendChild(iframe); +}; + +const startVideo = () => { + videoLink.addEventListener('click', () => { + videoLink.removeAttribute('href'); + button.remove(); + createIframe(); + }); +}; + +export { startVideo }; diff --git a/source/scripts/accordion-switch.js b/source/scripts/accordion-switch.js new file mode 100644 index 0000000..f9fc1e5 --- /dev/null +++ b/source/scripts/accordion-switch.js @@ -0,0 +1,64 @@ +import { FaqContent, ClassList } from './question-answer-content.js'; + +const listQuestions = document.querySelectorAll('.faq__info-item'); +const categoryButtons = document.querySelectorAll('.faq__button'); + +const accordionOpener = () => { + listQuestions.forEach((element) => { + const button = element.querySelector('button'); + + button.addEventListener('click', () => { + if (element.classList.contains('faq__info-item--active')) { + element.classList.remove('faq__info-item--active'); + } else { + element.classList.add('faq__info-item--active'); + } + }); + }); +}; + +const contentSwitcher = () => { + categoryButtons.forEach((button) => { + button.addEventListener('click', () => { + categoryButtons.forEach((element) => { + element.classList.remove('faq__button--active'); + }); + button.classList.add('faq__button--active'); + + let category; + let order = 0; + + switch (button.classList[1]) { + case ClassList.center: + category = 'Center'; + break; + case ClassList.subscription: + category = 'Subscription'; + break; + case ClassList.services: + category = 'Services'; + break; + case ClassList.rules: + category = 'Rules'; + break; + default: + } + + const answerArr = Object.values(FaqContent[category]); + + listQuestions.forEach((element) => { + element.querySelector('h3').innerHTML = answerArr[order].title; + element.querySelector('p').innerHTML = answerArr[order].description; + order++; + }); + + }); + }); +}; + +const faqInteract = () => { + accordionOpener(); + contentSwitcher(); +}; + +export { faqInteract }; diff --git a/source/scripts/form-validate.js b/source/scripts/form-validate.js new file mode 100644 index 0000000..82fe10e --- /dev/null +++ b/source/scripts/form-validate.js @@ -0,0 +1,69 @@ +const form = document.querySelector('.form__form'); +const submitButton = form.querySelector('.form__button-submit'); +const inputName = form.querySelector('.form__input--name'); +const inputTelephone = form.querySelector('.form__input--tel'); +const wrongTelephoneText = form.querySelector('.form__wrong-message--tel'); +const wrongNameText = form.querySelector('.form__wrong-message--name'); +const congratulationMessage = form.querySelector('.form__congratulation-message'); +const validNumber = /^\+?[0-9]{1,30}$/; +const validNumberQuantity = /^\+?[0-9]{11}$/; +const validNameSpaces = /^[^\s][a-z а-яё]{1,30}[^\s]$/i; +const validNameLetters = /^[a-z а-яё]{1,30}$/i; + +const addTextMessage = (slot, message, input) => { + slot.innerHTML = message; + input.classList.add('form__input--error'); +}; + + +const timerButtonBlock = () => { + congratulationMessage.innerHTML = 'Форма успешно отправлена!'; + submitButton.classList.add('form__button-submit--sent'); + setTimeout( + () => { + submitButton.classList.remove('form__button-submit--sent'); + congratulationMessage.innerHTML = ''; + }, + 5 * 1000 + ); +}; + +form.addEventListener('submit', (evt) => { + evt.preventDefault(); + + if (!validNumber.test(inputTelephone.value)) { + addTextMessage(wrongTelephoneText, 'Используйте только цифры', inputTelephone); + return; + } else { + inputTelephone.classList.remove('form__input--error'); + } + if (!validNumberQuantity.test(inputTelephone.value)) { + addTextMessage(wrongTelephoneText, 'Номер содержит 11 цифр', inputTelephone); + return; + } else { + inputTelephone.classList.remove('form__input--error'); + } + if (!validNameLetters.test(inputName.value)) { + addTextMessage(wrongNameText, 'Используйте только Буквы', inputName); + return; + } else { + inputName.classList.remove('form__input--error'); + } + if (!validNameSpaces.test(inputName.value)) { + addTextMessage(wrongNameText, 'Уберите лишнии пробелы', inputName); + return; + } else { + inputName.classList.remove('form__input--error'); + } + + + submitButton.disabled = true; + fetch('https://echo.htmlacademy.ru/.', { method: 'POST', body:new FormData(evt.target) }) + .then((response) => { + if (!response.ok) { + throw new Error('Не удалось отправить форму. Попробуйте ещё раз'); + } + }) + .then(timerButtonBlock()) + .finally(submitButton.disabled = false); +}); diff --git a/source/scripts/main.js b/source/scripts/main.js new file mode 100644 index 0000000..120402c --- /dev/null +++ b/source/scripts/main.js @@ -0,0 +1,11 @@ +import { startVideo } from './about-us-video.js'; +import { priceChanger } from './abonements-price-changer.js'; +import { initJuriSwiper, initReviewsSwiper } from './swipers.js'; +import { faqInteract } from './accordion-switch.js'; +import './form-validate.js'; + +startVideo(); +priceChanger(); +initJuriSwiper(); +faqInteract(); +initReviewsSwiper(); diff --git a/source/scripts/question-answer-content.js b/source/scripts/question-answer-content.js new file mode 100644 index 0000000..c7e81c9 --- /dev/null +++ b/source/scripts/question-answer-content.js @@ -0,0 +1,83 @@ +const FaqContent = { + Center: { + One: { + title: 'Как стать членом фитнес‑центра?', + description: 'При первом посещении и покупке абонемента, необходимо заполнить анкету и подписать договор. При покупке абонемента онлайн, анкета также заполняется онлайн и договор придёт вам на почту.', + }, + Two: { + title: 'Где можно посмотреть расписание?', + description: 'Вы можете ознакомиться с расписание на стойке информации, на нашем официальном сайте. Так же есть возможность оформить подписку на наши новости и получать расписание и обновления на почту каждую неделю.', + }, + Three: { + title: 'Есть кулеры в центре? Предоставляются полотенца?', + description: 'В нашем современном спортзале есть кулеры с водой для удобства посетителей. Что касается полотенец, то в спортзале предоставляют их бесплатно, в то время как другие могут взимать дополнительную плату или требовать, чтобы вы принесли свое собственное полотенце.', + }, + Four: { + title: 'Сколько тренеров работает в клубе и какова их квалификация', + description: 'В нашем клубе работает 8 тренеров с обширными квалификациями и направлениями. Посмотреть подробную информацию можно на сайте.', + }, + }, + Subscription: { + One: { + title: 'Занятия с тренером входят в абонемент?', + description: 'При посещении тренажерного зала вам необходимо оплатить занятия с тренером отдельно. В зале всегда присутствует дежурный тренер, которому можно задать вопрос, получить небольшую консультацию по тренажеру или технике выполнения упражнения.', + }, + Two: { + title: 'Можно ли заморозить абонемент?', + description: 'Лучший способ узнать о возможности и условиях заморозки абонемента в вашем спортзале — это обратиться непосредственно в администрацию спортзала, проверить их веб-сайт или прочитать условия вашего абонемента.', + }, + Three: { + title: 'Есть ли лимит по посещениям тренажерного зала и групповых занятий?', + description: 'Абонемент на групповые занятия включает определенное количество посещений групповых классов в месяц.', + }, + Four: { + title: 'Где можно посмотреть расписание?', + description: 'Чтобы узнать расписание вашего спортзала, вы можете воспользоваться следующими источниками - официальный веб-сайт спортзала, через мобильное приложение, позвонить нам или запросить электронную рассылку.', + }, + }, + Services: { + One: { + title: 'Предлагает ли клуб услуги по консультированию по вопросам питания?', + description: 'Да. Вы можете обратиться как к своему тренеру, так и к нашему нутрициологу. Специалист уточнит ваши данные, цели и предложит программу питания.', + }, + Two: { + title: 'Проводятся ли в клубе какие-либо мероприятия или соревнования?', + description: 'Да, в нашем зале проводится - различные мероприятия и соревнования. Фитнес-мероприятия и мастер-классы, соревнования и турниры, образовательные мероприятия, Открытые дни и дни открытых дверей. Актуальное расписание можно узнать в наших социальных сетях.', + }, + Three: { + title: 'Можно ли приобрести в центре спортивное питание?', + description: 'Мы предлагаем спортивное питание в нашем магазинах и на ресепшене.', + }, + Four: { + title: 'Есть ли в центре детская комната?', + description: 'Да, в нашем спорт зале есть детская комната. Посмотреть фотографии можете в наших социальных сетях.', + }, + }, + Rules: { + One: { + title: 'Есть в фитнес-центре дресс-код?', + description: 'Для тренировок необходимо иметь предназначенную для этого закрытую спортивную обувь и одежду. Верхняя и нижняя части тела должны быть закрыты (используйте футболки, майки, спортивные брюки, шорты, кроссовки). В целях безопасности, запрещается тренироваться босиком, в пляжных или домашних тапочках и т. п., исключения составляют специальные классы (например, йога, пилатес).', + }, + Two: { + title: 'Можно ли приводить с собой детей на тренировки?', + description: 'В нашем спортзале обустроена детская комната, для комфортного пребывания ребенка. Так же в наших соц сетях вывешены часы работы аниматоров.', + }, + Three: { + title: 'Какие дополнительные правила посещения центра?', + description: 'Есть несколько обязательных правил которые необходимо соблюсти перед тренировкой. У вас должна быть с собой тренировочная форма. Медицинская справка о отсутствие медицинский противопоказаний. Запрещено приносить продукты питания с собой. Для детей разных возрастов есть ограничения на некоторые секции зала.', + }, + Four: { + title: 'Нужна ли медицинская справка для посещения залов и бассейна?', + description: 'Для общего посещения тренажерного зала справка не требуется. Однако, если у вас есть определенные медицинские условия или заболевания, которые могут повлиять на безопасность тренировок, может быть рекомендовано получить справку от врача. Для бассейна справка требуется в обязательном порядке.', + }, + } +}; + +const ClassList = { + center: 'faq__button--center', + subscription: 'faq__button--subscription', + services:'faq__button--services', + rules: 'faq__button--rules', +}; + +export { FaqContent, ClassList }; diff --git a/source/scripts/swipers.js b/source/scripts/swipers.js new file mode 100644 index 0000000..453ee8a --- /dev/null +++ b/source/scripts/swipers.js @@ -0,0 +1,64 @@ +import Swiper from '../vendor/swiper-bundle/swiper.min.mjs'; +import Navigation from '../vendor/swiper-bundle/modules/navigation.min.mjs'; +import Pagination from '../vendor/swiper-bundle/modules/pagination.min.mjs'; + +const initJuriSwiper = () => { + new Swiper('.swiper--juri', { + + modules: [Navigation, Pagination], + + width: 260, + loop: true, + speed: 500, + spaceBetween: 40, + + navigation: { + nextEl: '.swiper-button-next--juri', + prevEl: '.swiper-button-prev--juri', + }, + + breakpoints: { + 768: { + width: 560, + slidesPerView: 2, + }, + + 1366: { + width: 1160, + slidesPerView: 4, + allowTouchMove: false, + }, + } + }); +}; + +const initReviewsSwiper = () => { + new Swiper('.swiper--reviews', { + + modules: [Navigation, Pagination], + + width: 240, + speed: 800, + spaceBetween: 40, + + navigation: { + nextEl: '.swiper-button-next--reviews', + prevEl: '.swiper-button-prev--reviews', + }, + + breakpoints: { + 768: { + width: 500, + slidesPerView: 1, + }, + + 1366: { + width: 560, + slidesPerView: 1, + allowTouchMove: false, + }, + } + }); +}; + +export { initJuriSwiper, initReviewsSwiper }; diff --git a/source/styles/blocks/README.md b/source/styles/blocks/README.md new file mode 100644 index 0000000..aca27ee --- /dev/null +++ b/source/styles/blocks/README.md @@ -0,0 +1,9 @@ +# Папка для стилей БЭМ-блоков + +_header.scss_ + +```css +.header {} +.header__logo {} +.header__nav {} +``` diff --git a/source/styles/blocks/abonements.scss b/source/styles/blocks/abonements.scss new file mode 100644 index 0000000..8b6cbf4 --- /dev/null +++ b/source/styles/blocks/abonements.scss @@ -0,0 +1,364 @@ + +.abonements { + background-color: $auxiliary-background; + position: relative; +} + +.abonements__wrapper { + padding: 41px 15px 39px; + scroll-behavior: smooth; + + @media (min-width: $tablet-width) { + padding-top: 61px; + padding-bottom: 61px; + + &::after { + content: ""; + display: block; + width: 324px; + height: 355px; + position: absolute; + bottom: 32px; + right: 0; + overflow: hidden; + background-image: + image-set( + url("../../images/abonements-bumper-disks-tablet@1x.webp") type("image/webp") 1x, + url("../../images/abonements-bumper-disks-tablet@2x.webp") type("image/webp") 2x, + url("../../images/abonements-bumper-disks-tablet@1x.png") type("image/png") 1x, + url("../../images/abonements-bumper-disks-tablet@2x.png") type("image/png") 2x, + ); + } + } + + @media (min-width: $desktop-width) { + padding-top: 100px; + padding-bottom: 101px; + + &::after { + width: 303px; + height: 431px; + bottom: 16px; + background-image: + image-set( + url("../../images/abonements-bumper-disks-desktop@1x.webp") type("image/webp") 1x, + url("../../images/abonements-bumper-disks-desktop@2x.webp") type("image/webp") 2x, + url("../../images/abonements-bumper-disks-desktop@1x.png") type("image/png") 1x, + url("../../images/abonements-bumper-disks-desktop@2x.png") type("image/png") 2x, + ); + } + } +} + +.abonements__title { + font: $h3-mobile; + margin: 0 auto 21px; + width: fit-content; + max-width: 290px; + text-align: center; + + @media (min-width: $tablet-width) { + font: $h3-tablet; + margin-bottom: 26px; + } + + @media (min-width: $desktop-width) { + font: $h3-desktop; + margin-bottom: 11px; + } +} + +.abonements__duration-list { + @include list-style-none; + + display: flex; + justify-content: space-between; + position: relative; + margin-bottom: 28px; + + &::after { + content: ""; + position: absolute; + display: block; + height: 2px; + width: 100%; + background-color: rgba($color: #787878, $alpha: 0.2); + bottom: 2px; + } + + @media (min-width: $tablet-width) { + width: fit-content; + gap: 44px; + margin: 0 auto 44px; + } + + @media (min-width: $desktop-width) { + gap: 51px; + margin-bottom: 39px; + + &::after { + bottom: 1px; + } + } +} + +.abonements__duration-button { + font: $tabs-lined-mobile; + color: rgba($color: $primary, $alpha: 0.7); + text-transform: none; + padding: 10px 0; + + &:hover { + color: rgba($color: $primary, $alpha: 0.9); + text-decoration: underline 2px #787878; + text-underline-offset: 9px; + + @media (min-width: $desktop-width) { + text-underline-offset: 10px; + } + } + + &:focus-visible { + color: $primary; + text-decoration: underline 2px $primary; + text-underline-offset: 9px; + outline: none; + + @media (min-width: $desktop-width) { + text-underline-offset: 10px; + } + } + + &:active { + color: $primary; + text-decoration: underline 2px #ed0233; + text-underline-offset: 9px; + outline: none; + + @media (min-width: $desktop-width) { + text-underline-offset: 10px; + } + } + + &:disabled { + opacity: 0.3; + text-decoration: underline 2px $dark-border; + text-underline-offset: 9px; + pointer-events: none; + + @media (min-width: $desktop-width) { + text-underline-offset: 10px; + } + } + + @media (min-width: $tablet-width) { + font: $tabs-lined-tablet; + } + + @media (min-width: $desktop-width) { + font: $tabs-lined-desktop; + } +} + +.abonements__duration-button--active { + color: $primary; + text-decoration: underline 2px $tabs-status; + text-underline-offset: 9px; + pointer-events: none; + + @media (min-width: $desktop-width) { + text-underline-offset: 10px; + } +} + +.abonements__type-list { + @include list-style-none; + + display: flex; + flex-direction: column; + gap: 34px; + + @media (min-width: $tablet-width) { + width: 380px; + position: relative; + margin: 0 auto; + gap: 41px; + z-index: 2; + } + + @media (min-width: $desktop-width) { + flex-flow: wrap row; + width: 1160px; + gap: 40px; + } +} + +.abonements__type-item { + padding: 51px 42px; + background-color: $white-background; + position: relative; + + @media (min-width: $tablet-width) { + padding: 64px 65px 65px; + } + + @media (min-width: $desktop-width) { + box-sizing: border-box; + padding-top: 65px; + width: 360px; + } +} + +.abonements__type-title { + font: $h4-mobile; + color: $primary; + text-align: center; + margin-top: 0; + margin-bottom: 18px; + + @media (min-width: $tablet-width) { + font: $h4-tablet; + margin-bottom: 22px; + } + + @media (min-width: $desktop-width) { + font: $h4-desktop; + margin-bottom: 18px; + } +} + +.abonements__type-description { + font: $medium-mobile; + text-align: center; + margin-top: 0; + margin-bottom: 22px; + + @media (min-width: $tablet-width) { + font: $medium-tablet; + } + + @media (min-width: $desktop-width) { + margin-bottom: 18px; + } +} + +.abonements__cost-wrapper { + position: relative; + display: flex; + min-height: 114px; + justify-content: center; + align-items: flex-end; + margin-bottom: 19px; + + @media (min-width: $tablet-width) { + min-height: 150px; + margin-bottom: 22px; + } + + @media (min-width: $desktop-width) { + margin-bottom: 17px; + min-height: 148px; + } +} + +.abonements__cost-background { + font: $largest-number-mobile; + position: absolute; + top: -6px; + margin: 0; + color: rgba($color: #e8e8e8, $alpha: 0.5); + + @media (min-width: $tablet-width) { + font: $largest-number-tablet; + top: -1px; + } +} + +.abonements__cost-current { + font: $medium-number-mobile; + color: $primary-lighter; + position: relative; + z-index: 2; + margin: 0; + display: flex; + align-items: center; + + &::after { + content: ""; + display: inline-block; + width: 24px; + height: 33px; + margin-left: 10px; + background-image: url("../../icons/stack.svg#abonements-rub"); + } + + @media (min-width: $tablet-width) { + font: $medium-number-tablet; + + &::after { + width: 30px; + height: 42px; + margin-left: 14px; + } + } +} + +.abonements__type-link { + font: $button-mobile; + display: block; + text-decoration: none; + color: $primary; + text-align: center; + box-sizing: border-box; + width: 206px; + padding: 25px; + border: 2px solid $primary; + + &:hover { + background-image: linear-gradient($button-grad); + color: $base-white; + border: none; + } + + &:focus-visible { + background-image: linear-gradient(-80deg, rgba($color: #003eb7, $alpha: 0.8) 0%, rgba($color: #ed0233, $alpha: 0.8) 80%, rgba($color: #ed0233, $alpha: 0.8) 100%); + color: $base-white; + } + + &:active { + background-image: linear-gradient($button-grad); + color: rgba($color: $base-white, $alpha: 0.7); + border: none; + } + + &:focus-visible::after, + &:active::after, + &:hover::after { + box-sizing: border-box; + content: ""; + position: absolute; + display: block; + width: 100%; + height: 100%; + top: 0; + left: 0; + border-width: 7px; + border-style: solid; + border-image: linear-gradient($button-grad); + border-image-slice: 1; + } + + @media (min-width: $tablet-width) { + width: 250px; + font: $medium-button-tablet; + } + + @media (min-width: $desktop-width) { + width: 230px; + } +} + +.abonements__type-link--disabled { + opacity: 0.3; + pointer-events: none; +} diff --git a/source/styles/blocks/about-us.scss b/source/styles/blocks/about-us.scss new file mode 100644 index 0000000..a7020de --- /dev/null +++ b/source/styles/blocks/about-us.scss @@ -0,0 +1,264 @@ +.about-us__wrapper { + padding-top: 40px; + padding-bottom: 40px; + + @media (min-width: $tablet-width) { + padding-top: 60px; + padding-bottom: 84px; + } + + @media (min-width: $desktop-width) { + padding-top: 120px; + padding-bottom: 204px; + display: flex; + } +} + +.about-us__text-wrapper { + @media (min-width: $desktop-width) { + max-width: 355px; + margin-right: 145px; + } +} + +.about-us__wrapper p { + font: $medium-mobile; + margin: 0 15px 34px; + color: $primary; + + @media (min-width: $tablet-width) { + font: $medium-tablet; + max-width: 502px; + margin: 0 auto 36px; + text-align: center; + } + + @media (min-width: $desktop-width) { + font: $medium-desktop; + max-width: 355px; + margin: 0 auto 9px; + text-align: start; + } +} + +.about-us__wrapper p:nth-of-type(3) { + display: none; + + @media (min-width: $desktop-width) { + display: block; + } +} + +.about-us__title { + font: $h3-mobile; + color: $primary; + margin: 0 15px 12px; + + @media (min-width: $tablet-width) { + font: $h3-tablet; + margin: 0; + text-align: center; + margin-bottom: 20px; + } + + @media (min-width: $desktop-width) { + font: $h3-desktop; + text-align: start; + margin-bottom: 26px; + } +} + +.about-us__wrapper .about-us__subtitle { + font: $h6-mobile; + color: $primary; + margin: 0 15px 38px; + + @media (min-width: $tablet-width) { + font: $h6-tablet; + text-align: center; + margin: 0 auto 36px; + } + + @media (min-width: $desktop-width) { + font: $h6-desktop; + text-align: start; + margin: 0 auto 94px; + } +} + +.about-us__media-wrapper { + position: relative; +} + +.about-us__image { + display: block; + margin-bottom: 36px; + background-color: #d9dbe7; +} + +.about-us__link { + position: relative; + width: 320px; + height: 170px; + background-color: #7c8fb4; + display: block; + + @media (min-width: $tablet-width) { + width: 270px; + height: 170px; + position: absolute; + bottom: -85px; + left: 50%; + transform: translateX(-50%); + } + + @media (min-width: $desktop-width) { + width: 360px; + height: 230px; + top: 285px; + left: 80px; + } +} + +.about-us__video { + border: none; + margin: 0; + width: 320px; + height: 170px; + position: absolute; + top: 0; + + @media (min-width: $tablet-width) { + width: 270px; + height: 170px; + } + + @media (min-width: $desktop-width) { + width: 360px; + height: 230px; + } +} + +.about-us__play-button { + width: 68px; + height: 68px; + border-radius: 50%; + border: 2px solid rgba(237, 2, 51, 0.2); + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + + &::after { + content: ""; + display: block; + position: absolute; + width: 52px; + height: 52px; + background-image: linear-gradient($button-grad); + border-radius: 50%; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + + &::before { + content: ""; + width: 10px; + height: 11px; + position: absolute; + top: 50%; + left: 52%; + transform: translate(-50%, -50%); + z-index: 1; + background-color: #ffffff; + mask-image: url("../../icons/stack.svg#button-play-triangle"); + } + + @media (min-width: $desktop-width) { + width: 96px; + height: 96px; + + &::after { + width: 72px; + height: 72px; + } + + &::before { + width: 15px; + height: 15px; + top: 49%; + left: 53%; + mask-size: 15px 15px; + mask-repeat: no-repeat; + } + } +} + +.about-us__link:hover .about-us__play-button { + border-color: rgba($color: $darker-background, $alpha: 0.6); + + &::after { + background-image: none; + background-color: $main-background; + } + + &::before { + background-color: rgba($color: $darker-background, $alpha: 0.6); + } +} + +.about-us__link:focus-visible .about-us__play-button { + border-color: $darker-background; + outline: none; + + &::after { + background-image: none; + background-color: #c8c9cc; + } + + &::before { + background-color: $darker-background; + } +} + +.about-us__link:active .about-us__play-button { + border-color: $darker-background; + outline: none; + + &::after { + width: 58px; + height: 58px; + background-image: none; + background-color: $main-background; + } + + &::before { + background-color: $darker-background; + } +} + +.about-us__link--disabled { + cursor: default; + pointer-events: none; +} + +.about-us__link--disabled .about-us__play-button { + cursor: default; + opacity: 0.6; + border-color: $darker-background; + + &::after { + background-image: none; + background-color: $main-background; + } + + &::before { + background-color: $darker-background; + } +} + +.about-us__video-preview { + display: block; + background-color: #8296bb; +} diff --git a/source/styles/blocks/benefits.scss b/source/styles/blocks/benefits.scss new file mode 100644 index 0000000..2a8282d --- /dev/null +++ b/source/styles/blocks/benefits.scss @@ -0,0 +1,225 @@ +.benefits { + background-color: $auxiliary-background; +} + +.benefits__wrapper { + padding: 41px 0 39px; + + @media (min-width: $tablet-width) { + padding: 61px 45px; + } + + @media (min-width: $desktop-width) { + padding: 100px 103px 99px; + } +} + +.benefits__title { + font: $h3-mobile; + text-align: center; + margin-top: 0; + margin-bottom: 40px; + padding: 0 15px; + + @media (min-width: $tablet-width) { + font: $h3-tablet; + margin-bottom: 49px; + } + + @media (min-width: $desktop-width) { + font: $h3-desktop; + margin-bottom: 51px; + } +} + +.benefits__list { + @include list-style-none; + + display: flex; + flex-direction: column; + gap: 35px; + + @media (min-width: $tablet-width) { + flex-flow: row wrap; + gap: 30px; + } + + @media (min-width: $desktop-width) { + display: grid; + grid-template-columns: 360px 360px 360px; + gap: 80px 40px; + } +} + +.benefits__list li { + padding: 0 15px; + + @media (min-width: $tablet-width) { + padding: 0; + display: flex; + gap: 15px; + max-width: 324px; + } + + @media (min-width: $desktop-width) { + position: relative; + max-width: 360px; + justify-content: space-between; + } +} + +.benefits__list li:nth-child(1), +.benefits__list li:nth-child(2) { + @media (min-width: $desktop-width) { + &::after { + content: ""; + position: absolute; + width: 100%; + height: 2px; + background-color: rgba($color: $tabs-status, $alpha: 0.2); + bottom: -40px; + } + } +} + +.benefits__list li div:nth-child(2) { + @media (min-width: $desktop-width) { + max-width: 210px; + } +} + +.benefits__list li:nth-child(3) { + margin: 4px 0 6px; + padding: 30px 15px 39px; + background-color: $lighter-border; + + @media (min-width: $tablet-width) { + display: block; + margin: 10px 179px; + padding: 35px; + } + + @media (min-width: $desktop-width) { + margin: auto 0; + grid-row: 1 / 3; + grid-column: 2 / 3; + padding: 57px 40px 58px; + } +} + +.benefits__list strong { + font: $large-number-mobile; + color: transparent; + background: linear-gradient($text-grad); + background-clip: text; + width: fit-content; + margin: 0 auto; + display: block; + + @media (min-width: $tablet-width) { + font: $large-number-tablet; + margin: 0; + } + + @media (min-width: $desktop-width) { + font: $large-number-desktop; + } +} + +.benefits__list li:nth-child(3) strong { + color: $base-white; + margin-bottom: 6px; + + @media (min-width: $tablet-width) { + margin: 0 auto 25px; + } + + @media (min-width: $desktop-width) { + margin-bottom: 10px; + } +} + +.benefits__list small { + font: $small-mobile; + color: #2e35ac; + text-align: center; + width: fit-content; + margin: 0 auto 12px; + display: block; + + @media (min-width: $tablet-width) { + font: $small-tablet; + margin: 0; + } + + @media (min-width: $desktop-width) { + font: $small-desktop; + } +} + +.benefits__list li:nth-child(3) h3 { + font: $h4-mobile; + color: $base-white; + margin-bottom: 20px; + + @media (min-width: $tablet-width) { + font: $h4-tablet; + margin: 0 auto 25px; + width: fit-content; + } + + @media (min-width: $desktop-width) { + font: $h4-desktop; + margin-bottom: 31px; + } +} + +.benefits__list h3 { + font: $h6-mobile; + text-align: center; + max-width: 240px; + margin: 0 auto 12px; + + @media (min-width: $tablet-width) { + font: $h6-tablet; + text-align: start; + } + + @media (min-width: $desktop-width) { + font: $h6-desktop; + margin-bottom: 7px; + } +} + +.benefits__list p { + font: $medium-mobile; + text-align: center; + max-width: 230px; + margin: 0 auto; + + @media (min-width: $tablet-width) { + font: $medium-tablet; + text-align: start; + max-width: none; + } + + @media (min-width: $desktop-width) { + font: $medium-desktop; + } +} + +.benefits__list li:nth-child(3) p { + color: $base-white; + + @media (min-width: $tablet-width) { + max-width: 250px; + width: fit-content; + text-align: center; + margin: 0 auto; + } + + @media (min-width: $desktop-width) { + font: $medium-desktop; + max-width: 280px; + } +} diff --git a/source/styles/blocks/button.scss b/source/styles/blocks/button.scss new file mode 100644 index 0000000..ec2bda2 --- /dev/null +++ b/source/styles/blocks/button.scss @@ -0,0 +1,9 @@ +.button { + border: none; + font: $button-mobile; + color: $base-white; + cursor: pointer; + background-color: transparent; + display: block; + text-transform: uppercase; +} diff --git a/source/styles/blocks/faq.scss b/source/styles/blocks/faq.scss new file mode 100644 index 0000000..22999d3 --- /dev/null +++ b/source/styles/blocks/faq.scss @@ -0,0 +1,283 @@ +.faq { + background-color: $auxiliary-background; +} + +.faq__wrapper { + padding: 71px 15px; + + @media (min-width: $tablet-width) { + padding: 61px 45px 60px; + } + + @media (min-width: $desktop-width) { + padding: 100px 103px; + } +} + +.faq__title { + font: $h3-mobile; + text-align: center; + margin-bottom: 34px; + margin-top: 0; + + @media (min-width: $tablet-width) { + font: $h3-tablet; + margin-bottom: 44px; + } + + @media (min-width: $desktop-width) { + font: $h3-desktop; + margin-bottom: 50px; + text-align: start; + } +} + +.faq__container { + @media (min-width: $desktop-width) { + display: flex; + align-items: flex-start; + gap: 40px; + } +} + +.faq__button-list { + @include list-style-none; + + display: flex; + flex-wrap: wrap; + gap: 10px; + margin-bottom: 35px; + + @media (min-width: $tablet-width) { + margin-bottom: 45px; + } + + @media (min-width: $desktop-width) { + width: 260px; + margin: 0; + } +} + + +.faq__button { + font: $tabs-button-mobile; + color: $primary; + box-sizing: border-box; + padding: 14px 20px; + width: 140px; + min-height: 46px; + border: 1px solid rgba($color: $dark-border, $alpha: 0.2); + text-transform: none; + + &:hover, + &:focus-visible { + border-color: $dark-border; + outline: none; + } + + &:active { + border: none; + color: $base-white; + background-image: linear-gradient($button-grad); + } + + &:disabled { + color: #c8c9cc; + pointer-events: none; + } + + @media (min-width: $tablet-width) { + font: $tabs-button-tablet; + width: 162px; + min-height: 54px; + padding: 17px 20px; + } + + @media (min-width: $desktop-width) { + width: 260px; + padding-top: 18px; + padding-bottom: 16px; + } +} + +.faq__button--active { + border: none; + color: $base-white; + background-image: linear-gradient($button-grad); + pointer-events: none; +} + +.faq__info-list { + @include list-style-none; + + @media (min-width: $desktop-width) { + flex-grow: 1; + } +} + +.faq__info-item { + padding-top: 20px; + padding-bottom: 20px; + border-top: 1px solid #74819c; + + &:last-of-type { + border-bottom: 1px solid #74819c; + } + + @media (min-width: $tablet-width) { + padding-top: 23px; + padding-bottom: 23px; + } + + @media (min-width: $desktop-width) { + padding-bottom: 22px; + } +} + +.faq__info-item div { + display: flex; + justify-content: space-between; + align-items: center; + transition-property: margin-bottom; + transition-duration: 1s; +} + +.faq__info-item--active div { + margin-bottom: 20px; + + @media (min-width: $tablet-width) { + margin-bottom: 10px; + } + + @media (min-width: $desktop-width) { + margin-bottom: 22px; + } +} + +.faq__info-item h3 { + font: $h5-mobile; + max-width: 238px; + margin: 0; + + @media (min-width: $tablet-width) { + font: $h5-tablet; + max-width: 500px; + } + + @media (min-width: $desktop-width) { + font: $h5-desktop; + max-width: 660px; + } +} + +.faq__info-item button { + width: 30px; + height: 30px; + position: relative; + background-color: $white-background; + border: 1px solid $lighter-border; + border-radius: 50%; + + &::after { + content: ""; + display: block; + position: absolute; + box-sizing: border-box; + background-color: $lighter-border; + width: 14px; + height: 2px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + + &::before { + content: ""; + display: block; + position: absolute; + box-sizing: border-box; + height: 14px; + width: 2px; + background-color: $lighter-border; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + + &:hover { + background-color: $lighter-border; + + &::after, + &::before { + background-color: $white-background; + } + } + + &:focus-visible { + background-color: #74819c; + outline: none; + + &::after, + &::before { + background-color: $white-background; + } + } + + &:active { + opacity: 0.5; + } + + &:disabled { + pointer-events: none; + opacity: 0.3; + } + + @media (min-width: $tablet-width) { + width: 40px; + height: 40px; + + &::after { + width: 20px; + } + + &::before { + height: 20px; + } + } +} + +.faq__info-item--active button { + background-color: $lighter-border; + + &::after { + background-color: $white-background; + } + + &::before { + content: none; + } +} + +.faq__info-item p { + font: $large-mobile; + margin: 0; + max-width: 238px; + min-height: 0; + max-height: 0; + overflow: hidden; + transition-property: all; + transition-duration: 1s; + + @media (min-width: $tablet-width) { + font: $large-tablet; + max-width: 560px; + } + + @media (min-width: $desktop-width) { + max-width: 660px; + } +} + +.faq__info-item--active p { + max-height: 150px; +} diff --git a/source/styles/blocks/form.scss b/source/styles/blocks/form.scss new file mode 100644 index 0000000..cedfad6 --- /dev/null +++ b/source/styles/blocks/form.scss @@ -0,0 +1,333 @@ +.form { + @media (min-width: $desktop-width) { + position: relative; + background-image: linear-gradient(to right, $darker-background 0%, $darker-background 50%, $white-background 50%, $white-background 100%); + + &::after { + content: ""; + display: block; + width: 50%; + height: 1px; + background-color: #74819c; + position: absolute; + left: 50%; + top: 0; + } + } +} + +.form__main-wrapper { + @media (min-width: $desktop-width) { + display: flex; + margin: 0 auto; + width: 1366px; + } +} + +.form__form-container { + background-color: $darker-background; + + @media (min-width: $desktop-width) { + width: 683px; + box-sizing: border-box; + margin: 0; + } +} + +.form__wrapper { + background-color: $darker-background; + padding: 71px 15px 70px; + + @media (min-width: $tablet-width) { + padding: 60px 164px; + } + + @media (min-width: $desktop-width) { + max-width: none; + width: auto; + padding: 60px 103px 61px; + } +} + +.form__title { + font: $h3-mobile; + color: $base-white; + margin-top: 0; + margin-bottom: 33px; + + @media (min-width: $tablet-width) { + font: $h3-desktop; + text-align: center; + } + + @media (min-width: $desktop-width) { + text-align: start; + margin-bottom: 34px; + } +} + +.form__input-wrapper { + @media (min-width: $tablet-width) { + display: flex; + gap: 30px; + margin-bottom: 36px; + flex-wrap: wrap; + } + + @media (min-width: $desktop-width) { + margin-bottom: 35px; + } +} + +.form__input-container { + width: 100%; + position: relative; + + @media (min-width: $tablet-width) { + width: 205px; + } + + @media (min-width: $desktop-width) { + width: 223px; + } +} + +.form__input { + font: $medium-mobile; + background-color: transparent; + border: none; + border-bottom: 1px solid #74819c; + width: 100%; + color: $base-white; + padding: 3px 0; + margin-bottom: 35px; + + &:hover { + border-bottom: 1px solid $light-border; + } + + &:focus-visible { + border-color: transparent; + outline: 1px solid $light-border; + } + + &:disabled { + color: rgba($color: $base-white, $alpha: 0.4); + border-bottom-color: rgba($color: $light-border, $alpha: 0.3); + } + + &::placeholder { + color: rgba($color: $base-white, $alpha: 0.4); + } + + @media (min-width: $tablet-width) { + margin-bottom: 0; + } +} + +.form__wrong-message { + display: none; +} + +.form__input--error { + border-bottom-color: $wrong-form; +} + +.form__input--error + .form__wrong-message { + display: block; + color: $wrong-form; + position: absolute; + width: 100%; + left: 0; + bottom: 9px; + + @media (min-width: $tablet-width) { + bottom: -25px; + } +} + +.form__button-container { + position: relative; + width: 100%; +} + +.form__button-submit { + font: $button-mobile; + text-align: center; + width: 100%; + padding: 22px; + border: 2px solid $light-border; + + @media (min-width: $tablet-width) { + padding: 26px 20px 24px; + font: $medium-button-desktop; + } + + &:hover { + background-color: $main-background; + color: $primary-lighter; + } + + &:focus-visible { + background-color: rgba($color: $main-background, $alpha: 0.8); + border: 2px solid #000000; + outline: none; + color: $primary-lighter; + } + + &:active { + background-color: $main-background; + outline: none; + color: $primary; + } + + &:disabled { + cursor: default; + color: $base-white; + opacity: 0.5; + background-color: transparent; + pointer-events: none; + } +} + +.form__congratulation-message { + display: none; + color: #03fc2c; + position: absolute; + width: 100%; + left: 50%; + transform: translateX(-50%); + text-align: center; + bottom: -30px; +} + +.form__button-submit--sent + .form__congratulation-message { + display: block; +} + +.form__contacts-container { + box-sizing: border-box; + padding: 37px 15px 39px; + width: 320px; + margin: 0 auto; + + @media (min-width: $tablet-width) { + padding: 60px 164px; + width: 768px; + } + + @media (min-width: $desktop-width) { + width: 683px; + padding: 60px 103px 69px; + } +} + +.form__title--contacts { + color: $primary; + margin-bottom: 37px; + + @media (min-width: $desktop-width) { + margin-bottom: 37px; + } +} + +.form__contacts-list { + @include list-style-none; + + display: flex; + flex-direction: column; + gap: 27px; + + @media (min-width: $tablet-width) { + display: grid; + grid-template-columns: 190px 190px; + gap: 16px 60px; + position: relative; + + &::after { + content: ""; + display: block; + width: 1px; + height: 100%; + left: 50%; + position: absolute; + background-color: #74819c; + } + } + + @media (min-width: $desktop-width) { + gap: 14px 108px; + } +} + +.form__contacts-item { + @media (min-width: $tablet-width) { + &:nth-child(2) { + grid-row: 2 / 3; + } + } +} + +.form__contacts-item-title { + font: $h5-mobile; + margin-top: 0; + margin-bottom: 13px; + + @media (min-width: $tablet-width) { + font: $h5-desktop; + margin-bottom: 6px; + } +} + +.form__contacts-item-description { + font: $small-mobile; + margin-top: 0; + margin-bottom: 0; + display: block; + + @media (min-width: $desktop-width) { + font: $small-desktop; + } +} + +.form__contacts-item-link { + text-decoration: none; + color: $primary; + font: $small-mobile; + position: relative; + + &:hover { + color: rgba(28, 51, 116, 0.5); + } + + &:focus-visible { + color: rgba(28, 51, 116, 0.5); + } + + &:active { + color: $ancillary-block-background; + + &::after { + content: ""; + width: 100%; + height: 2px; + position: absolute; + background-color: $primary; + left: 0; + bottom: 0; + } + } + + @media (min-width: $desktop-width) { + font: $small-desktop; + } +} + +.form__contacts-item-link--disabled { + opacity: 0.3; + pointer-events: none; +} + +.form__contacts-address { + font-style: normal; +} diff --git a/source/styles/blocks/hero.scss b/source/styles/blocks/hero.scss new file mode 100644 index 0000000..43b61d6 --- /dev/null +++ b/source/styles/blocks/hero.scss @@ -0,0 +1,262 @@ +.hero { + background-image: linear-gradient($grad-background); +} + +.hero__wrapper { + padding: 0 15px; + padding-bottom: 32px; + + @media (min-width: $tablet-width) { + padding: 0 45px 100px; + } + + @media (min-width: $desktop-width) { + padding: 0 103px 120px; + } +} + +.hero__header { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + margin-bottom: 49px; + + @media (min-width: $tablet-width) { + margin-bottom: 0; + } + + @media (min-width: $desktop-width) { + margin-bottom: 28px; + } +} + +.hero__logo { + margin: 0; + padding: 16px 15px 18px 0; + vertical-align: bottom; + + @media (min-width: $tablet-width) { + padding: 31px 15px 31px 0; + } +} + +.hero__phone { + display: block; + text-decoration: none; + font: $h4-mobile; + color: $base-white; + padding: 13px 0 15px; + position: relative; + + @media (min-width: $tablet-width) { + font: $h4-tablet; + padding: 30px 0; + } + + @media (min-width: $desktop-width) { + font: $h4-desktop; + padding-top: 31px; + } + + &:hover { + color: rgba(28, 51, 116, 0.5); + } + + &:focus-visible { + color: $ancillary-block-background; + outline: none; + } + + &:active { + color: $ancillary-block-background; + + &::after { + content: ""; + width: 100%; + height: 2px; + position: absolute; + background-color: $primary; + left: 0; + bottom: 30%; + } + } + + &:disabled { + color: $auxiliary-background; + } +} + +.hero__content-wrapper { + @media (min-width: $tablet-width) { + display: flex; + justify-content: space-between; + } + + @media (min-width: $desktop-width) { + justify-content: flex-end; + gap: 56px; + } +} + +.hero__info-wrapper { + @media (min-width: $tablet-width) { + max-width: 324px; + } + + @media (min-width: $desktop-width) { + max-width: 385px; + } +} + +.hero__text-wrapper { + display: flex; + justify-content: space-between; + margin-bottom: 46px; + + @media (min-width: $tablet-width) { + gap: 26px; + margin-top: 32px; + margin-bottom: 49px; + } + + @media (min-width: $desktop-width) { + margin-top: 52px; + gap: 0; + margin-bottom: 38px; + } +} + +.hero__subtitle { + font: $small-mobile; + display: block; + max-width: 113px; + margin: 0; + text-align: end; + color: $base-white; + align-self: flex-end; + + @media (min-width: $tablet-width) { + font: $small-tablet; + margin-bottom: 25px; + } + + @media (min-width: $desktop-width) { + margin-bottom: 72px; + } +} + +.hero__title { + font: $h1-mobile; + display: block; + max-width: 156px; + text-transform: uppercase; + text-align: end; + color: $base-white; + margin: 0; + letter-spacing: 1px; + + @media (min-width: $tablet-width) { + font: $h1-tablet; + max-width: 185px; + letter-spacing: 1.6px; + } + + @media (min-width: $desktop-width) { + font: $h1-desktop; + max-width: 270px; + letter-spacing: 4px; + } +} + +.hero__title-city { + font: $h3-mobile; + text-transform: none; + display: block; + margin-bottom: 14px; + letter-spacing: 0; + + @media (min-width: $tablet-width) { + font: $h3-tablet; + margin-bottom: 10px; + } + + @media (min-width: $desktop-width) { + font: $h3-desktop; + margin-bottom: 42px; + } +} + +.hero__button { + font: $button-mobile; + box-sizing: border-box; + width: 290px; + padding: 23px 22px 22px; + border: 2px solid #ffffff; + display: block; + text-align: center; + text-decoration: none; + + @media (min-width: $tablet-width) { + width: 185px; + max-width: 185px; + margin-left: auto; + padding-top: 20px; + padding-bottom: 20px; + } + + @media (min-width: $desktop-width) { + width: 270px; + max-width: 270px; + padding-top: 26px; + padding-bottom: 24px; + } + + &:hover { + background-color: $main-background; + color: $primary-lighter; + } + + &:focus-visible { + background-color: rgba($color: $main-background, $alpha: 0.8); + border: 2px solid #000000; + outline: none; + color: $primary-lighter; + } + + &:active { + background-color: $main-background; + outline: none; + color: $primary; + } +} + +.hero__button--disabled { + cursor: default; + color: $base-white; + opacity: 0.5; + background-color: transparent; + pointer-events: none; +} + +.hero__coach-image-wrapper { + display: none; + + @media (min-width: $tablet-width) { + display: block; + } +} + +.hero__image-coach { + vertical-align: bottom; + background-color: #2a3166; + min-height: 390px; + min-width: 324px; + + @media (min-width: $desktop-width) { + display: block; + margin-right: 72px; + min-height: 524px; + min-width: 500px; + } +} diff --git a/source/styles/blocks/juri.scss b/source/styles/blocks/juri.scss new file mode 100644 index 0000000..223934e --- /dev/null +++ b/source/styles/blocks/juri.scss @@ -0,0 +1,116 @@ +.juri__wrapper { + padding: 40px 30px; + + @media (min-width: $tablet-width) { + padding: 30px 104px 60px; + } + + @media (min-width: $desktop-width) { + padding: 99px 104px; + } +} + +.juri__swiper-wrapper { + position: relative; +} + +.juri__title { + font: $h3-mobile; + margin-top: 0; + margin-bottom: 20px; + text-align: center; + + @media (min-width: $tablet-width) { + font: $h3-desktop; + margin-bottom: 46px; + } +} + +.juri__image { + display: block; + background-color: #c4c7d6; + + @media (min-width: $desktop-width) { + height: 301px; + } +} + +.juri__card-more-info { + color: $base-white; + box-sizing: border-box; + padding-top: 63px; + position: absolute; + width: 100%; + height: 109px; + bottom: 0; + margin-left: 1px; + transition-duration: 0.5s; + transition-property: height background; +} + +.juri__card-more-title { + font: $h6-desktop; + width: 100%; + bottom: 23px; + text-align: center; + margin-top: 0; + margin-bottom: 9px; + margin-left: 0; +} + +.juri__more-sub-title { + display: none; + font: $medium-desktop; + text-align: center; + margin-top: 0; + margin-bottom: 10px; +} + +.juri__more-list { + display: none; + margin: 0; + width: 144px; + padding-left: 66px; + list-style: none; +} + + +.juri__more-item { + font: $small-desktop; + max-width: 144px; + position: relative; + + &::after { + content: ""; + position: absolute; + display: block; + width: 6px; + height: 6px; + background-color: $white-background; + border-radius: 50%; + top: 50%; + transform: translateY(-50%); + left: -16px; + } + + &:not(:last-child) { + margin-bottom: 12px; + } +} + +.juri__card-more-wrapper:hover .juri__card-more-info, +.juri__card-more-wrapper:focus-visible .juri__card-more-info { + @media (min-width: $desktop-width) { + height: 100%; + background-color: rgba($color: $dark-border, $alpha: 0.89); + } +} + +.juri__card-more-wrapper:hover .juri__more-sub-title, +.juri__card-more-wrapper:focus-visible .juri__more-sub-title, +.juri__card-more-wrapper:hover .juri__more-list, +.juri__card-more-wrapper:focus-visible .juri__more-list { + @media (min-width: $desktop-width) { + display: block; + } +} diff --git a/source/styles/blocks/main-wrapper.scss b/source/styles/blocks/main-wrapper.scss new file mode 100644 index 0000000..b1ea42d --- /dev/null +++ b/source/styles/blocks/main-wrapper.scss @@ -0,0 +1,15 @@ +.main-wrapper { + width: 320px; + margin: 0 auto; + box-sizing: border-box; + + @media (min-width: $tablet-width) { + width: 768px; + padding: 0 45px; + } + + @media (min-width: $desktop-width) { + width: 1366px; + padding: 0 103px; + } +} diff --git a/source/styles/blocks/offers.scss b/source/styles/blocks/offers.scss new file mode 100644 index 0000000..8e538bb --- /dev/null +++ b/source/styles/blocks/offers.scss @@ -0,0 +1,287 @@ +.offers__wrapper { + padding-top: 40px; + padding-bottom: 40px; + + @media (min-width: $tablet-width) { + padding-top: 61px; + padding-bottom: 58px; + } + + @media (min-width: $desktop-width) { + padding-top: 100px; + padding-bottom: 100px; + } +} + +.offers__semi-wrapper { + @media (min-width: $desktop-width) { + display: flex; + gap: 40px; + } +} + +.offers__title { + font: $h3-mobile; + width: fit-content; + margin: 0 auto 40px; + text-align: center; + + @media (min-width: $tablet-width) { + font: $h3-tablet; + margin-bottom: 34px; + } + + @media (min-width: $desktop-width) { + font: $h3-desktop; + margin-bottom: 70px; + } +} + +.offers__price-wrapper { + margin-bottom: 40px; + + @media (min-width: $tablet-width) { + display: flex; + margin-bottom: 35px; + } + + @media (min-width: $desktop-width) { + margin-bottom: 0; + } +} + +.offers__price-wrapper div { + padding: 30px; + padding-bottom: 28px; + background-color: $banner-background; + + @media (min-width: $tablet-width) { + padding: 40px 25px 38px; + display: flex; + flex-direction: column; + } + + @media (min-width: $desktop-width) { + box-sizing: border-box; + width: 280px; + padding: 40px 45px 35px; + } +} + +.offers__price-wrapper small { + display: block; + font: $h4-mobile; + color: $base-white; + text-align: center; + margin-bottom: 9px; + + @media (min-width: $tablet-width) { + font: $h4-tablet; + text-align: start; + margin-bottom: 20px; + } + + @media (min-width: $desktop-width) { + font: $h4-desktop; + } +} + +.offers__price-wrapper strong { + font: $large-number-mobile; + color: $base-white; + display: block; + text-align: center; + margin-bottom: 28px; + + @media (min-width: $tablet-width) { + font: $large-number-tablet; + text-align: start; + margin-bottom: 40px; + } +} + +.offers__price-wrapper p { + font: $large-mobile; + color: $base-white; + text-align: center; + margin-top: 0; + margin-bottom: 29px; + + @media (min-width: $tablet-width) { + font: $large-tablet; + text-align: start; + } +} + +.offers__price-link { + color: $base-white; + font: $large-button-desktop; + text-transform: uppercase; + display: block; + text-align: center; + text-decoration: underline 1px $light-border; + padding-top: 10px; + padding-bottom: 7px; + text-underline-offset: 7px; + width: fit-content; + margin: 0 auto; + margin-top: -10px; + + &:hover { + opacity: 0.8; + } + + &:focus-visible { + outline: 1px solid $white-background; + text-decoration: none; + } + + &:active { + opacity: 1; + text-decoration: underline 1px $light-border; + text-underline-offset: 7px; + } + + @media (min-width: $tablet-width) { + align-self: flex-start; + margin: 0; + margin-top: auto; + } + + @media (min-width: $desktop-width) { + box-sizing: border-box; + padding: 10px; + margin-left: -10px; + } +} + +.offers__price-link--disabled { + opacity: 0.5; + pointer-events: none; +} + +.offers__price-image { + background-color: #426ddd; + display: block; + object-fit: cover; + height: 100%; +} + +.offers__benefits-wrapper { + @media (min-width: $desktop-width) { + display: flex; + } +} + +.offers__list { + @include list-style-none; + + margin: 0 15px; + display: flex; + flex-direction: column; + gap: 30px; + + @media (min-width: $tablet-width) { + margin: 0; + flex-direction: row; + } + + @media (min-width: $desktop-width) { + flex-grow: 1; + flex-direction: column; + align-self: flex-end; + } +} + +.offers__item { + border: 7px solid; + border-image: linear-gradient(-51deg, #00359f 0%, #d10a42 100%); + border-image-slice: 1; + padding: 21px 20px 25px; + + @media (min-width: $tablet-width) { + box-sizing: border-box; + width: 324px; + min-height: 188px; + padding-top: 20px; + display: flex; + flex-direction: column; + } + + @media (min-width: $desktop-width) { + min-height: 174px; + width: 560px; + padding-top: 21px; + } +} + +.offers__item h3 { + font: $h4-mobile; + text-align: center; + margin-top: 0; + margin-bottom: 20px; + + @media (min-width: $tablet-width) { + font: $h4-desktop; + text-align: start; + margin-bottom: 10px; + } +} + +.offers__item p { + font: $medium-mobile; + text-align: center; + margin-top: 0; + margin-bottom: 20px; + + @media (min-width: $tablet-width) { + font: $medium-desktop; + text-align: start; + } + + @media (min-width: $desktop-width) { + margin-bottom: 10px; + } +} + +.offers__item-link { + text-align: center; + font: $large-button-mobile; + color: #1c3374; + text-decoration: underline 1px #74819c; + width: fit-content; + margin: 0 auto; + text-underline-offset: 7px; + padding: 10px; + margin-bottom: -10px; + margin-top: -10px; + + &:hover { + opacity: 0.8; + text-decoration: underline 1px #1c3374; + } + + &:focus-visible { + outline: 1px solid $lighter-border; + text-decoration: none; + } + + &:active { + opacity: 1; + text-decoration: underline 1px $dark-border; + text-underline-offset: 7px; + } + + @media (min-width: $tablet-width) { + font: $large-button-desktop; + display: block; + text-align: start; + margin-top: auto; + margin-left: -10px; + } +} + +.offers__item-link--disabled { + opacity: 0.3; + pointer-events: none; +} diff --git a/source/styles/blocks/page-body.scss b/source/styles/blocks/page-body.scss new file mode 100644 index 0000000..3a139c4 --- /dev/null +++ b/source/styles/blocks/page-body.scss @@ -0,0 +1,9 @@ +.page-body { + display: flex; + flex-direction: column; + height: 100%; +} + +.page-body__main { + flex-grow: 1; +} diff --git a/source/styles/blocks/page-footer.scss b/source/styles/blocks/page-footer.scss new file mode 100644 index 0000000..7507afe --- /dev/null +++ b/source/styles/blocks/page-footer.scss @@ -0,0 +1,145 @@ +.page-footer { + background-color: #030a1a; +} + +.page-footer__wrapper { + padding: 40px 15px; + + @media (min-width: $tablet-width) { + padding: 45px 45px 48px; + display: flex; + justify-content: space-between; + } + + @media (min-width: $desktop-width) { + padding: 40px 103px 41px; + } +} + +.page-footer__wrapper picture { + max-height: 22px; +} + +.page-footer__logo { + display: block; + margin-bottom: 31px; + + @media (min-width: $tablet-width) { + margin-bottom: 0; + } +} + +.page-footer__nave-list { + @include list-style-none; + + display: flex; + flex-wrap: wrap; + gap: 20px 36px; + margin-bottom: 28px; + + @media (min-width: $tablet-width) { + margin-bottom: 0; + column-gap: 31px; + max-width: 393px; + } + + @media (min-width: $desktop-width) { + column-gap: 83px; + max-width: 601px; + } +} + +.page-footer__nave-link { + font: $small-mobile; + text-decoration: none; + color: $base-white; + display: block; + padding: 5px; + margin: -5px; + + &:hover { + border-bottom: 1px solid $light-border; + } + + &:focus-visible { + outline: 1px solid $light-border; + border: none; + } + + &:active { + border: none; + } + + @media (min-width: $tablet-width) { + font: $small-tablet; + } + + @media (min-width: $desktop-width) { + margin-top: -3px; + } +} + +.page-footer__nave-link--disabled { + pointer-events: none; + opacity: 0.4; +} + + +.page-footer__social-list { + @include list-style-none; + + display: flex; + flex-wrap: wrap; + gap: 16px 20px; + + @media (min-width: $tablet-width) { + column-gap: 15px; + } + + @media (min-width: $desktop-width) { + column-gap: 10px; + } +} + +.page-footer__social-link { + display: flex; + align-items: center; + justify-content: center; + background-color: $white-background; + width: 25px; + height: 25px; + border-radius: 50%; + + &:focus-visible { + outline: none; + background-color: $primary-lighter; + } + + &:hover { + background-color: #74819c; + } + + &:active { + background-color: $darker-background; + } +} + +.page-footer__social-link:hover .page-footer__social-image, +.page-footer__social-link:active .page-footer__social-image, +.page-footer__social-link:focus-visible .page-footer__social-image { + color: $white-background; +} + +.page-footer__social-link--disabled { + pointer-events: none; + background-color: rgba($color: $white-background, $alpha: 0.3); +} + +.page-footer__social-link--disabled .page-footer__social-image { + color: #030a1a; +} + +.page-footer__social-image { + display: block; + color: #030a1a; +} diff --git a/source/styles/blocks/page-main.scss b/source/styles/blocks/page-main.scss new file mode 100644 index 0000000..df6d837 --- /dev/null +++ b/source/styles/blocks/page-main.scss @@ -0,0 +1,3 @@ +.page-main__hero { + width: 100%; +} diff --git a/source/styles/blocks/reviews.scss b/source/styles/blocks/reviews.scss new file mode 100644 index 0000000..f209989 --- /dev/null +++ b/source/styles/blocks/reviews.scss @@ -0,0 +1,105 @@ +.reviews__wrapper { + padding: 40px; + + @media (min-width: $tablet-width) { + padding: 60px 45px; + } + + @media (min-width: $desktop-width) { + padding: 100px 103px; + } +} + +.reviews__swiper-container { + position: relative; + + @media (min-width: $tablet-width) { + width: 500px; + margin: 0 auto; + } + + @media (min-width: $desktop-width) { + width: 560px; + } +} + +.reviews__title { + font: $h3-mobile; + margin-top: 0; + text-align: center; + margin-bottom: 39px; + + @media (min-width: $tablet-width) { + font: $h3-desktop; + margin-bottom: 35px; + } + + @media (min-width: $desktop-width) { + margin-bottom: 75px; + } +} + +.reviews__slide-container { + background-color: $lighter-border; + max-width: 240px; + box-sizing: border-box; + padding: 30px 25px 18px; + box-shadow: 0 0 40px 0 rgba($color: $ancillary-block-background, $alpha: 0.2); + width: 240px; + + @media (min-width: $tablet-width) { + max-width: 500px; + width: 500px; + display: flex; + gap: 40px; + padding: 40px 30px 30px; + min-height: 242px; + } + + @media (min-width: $desktop-width) { + max-width: 560px; + width: 560px; + padding: 60px 60px 51px; + gap: 30px; + } +} + +.reviews__slide-container img { + display: block; + background-color: #56606d; + border-radius: 50%; + margin: 0 auto 10px; +} + +.reviews__slide-container h3 { + font: $h6-mobile; + color: $base-white; + margin-top: 0; + text-align: center; + + @media (min-width: $tablet-width) { + font: $h6-desktop; + text-align: start; + margin-bottom: 20px; + max-width: 250px; + } +} + +.reviews__slide-container p { + font: $medium-mobile; + color: $base-white; + text-align: center; + margin-top: 0; + margin-bottom: 10px; + height: auto; + + @media (min-width: $tablet-width) { + font: $medium-desktop; + text-align: start; + max-width: 320px; + } + + @media (min-width: $desktop-width) { + max-width: 330px; + } +} diff --git a/source/styles/blocks/super-games.scss b/source/styles/blocks/super-games.scss new file mode 100644 index 0000000..b7cd7c4 --- /dev/null +++ b/source/styles/blocks/super-games.scss @@ -0,0 +1,235 @@ +.super-games__wrapper { + padding: 25px 15px; + + + @media (min-width: $tablet-width) { + padding: 60px 45px; + display: flex; + } + + @media (min-width: $desktop-width) { + padding: 101px 103px; + } +} + +.super-games__container { + padding: 40px 39px 40px 40px; + background-color: $banner-background; + + @media (min-width: $tablet-width) { + padding: 40px 40px 38px; + } + + @media (min-width: $desktop-width) { + padding: 61px 80px; + box-sizing: border-box; + width: 500px; + } +} + +.super-games__inner-container { + display: flex; + justify-content: space-between; + gap: 9px; + + @media (min-width: $tablet-width) { + margin-bottom: 9px; + } + + @media (min-width: $desktop-width) { + margin-bottom: 27px; + } +} + +.super-games__title { + font: $h2-mobile; + color: $base-white; + margin: 0; + + @media (min-width: $tablet-width) { + font: $h2-tablet; + max-width: 100px; + } + + @media (min-width: $desktop-width) { + font: $h2-desktop; + max-width: 168px; + } +} + +.super-games__date-time-container { + @media (min-width: $tablet-width) { + max-width: 100px; + width: 100px; + } + + @media (min-width: $desktop-width) { + width: 95px; + max-width: 95px; + } +} + +.super-games__date-container { + margin-bottom: 5px; + + @media (min-width: $tablet-width) { + margin-bottom: 9px; + } + + @media (min-width: $desktop-width) { + margin-bottom: 21px; + } +} + +.super-games__date-container-title { + font: $large-mobile; + color: $base-white; + margin-top: 0; + margin-bottom: 5px; + position: relative; + + &::after { + content: ""; + display: block; + width: 100%; + height: 1px; + position: absolute; + bottom: -3px; + background-color: $white-background; + } + + @media (min-width: $tablet-width) { + font: $large-tablet; + + &::after { + bottom: -2px; + } + } + + @media (min-width: $desktop-width) { + font: $large-desktop; + margin-bottom: 11px; + + &::after { + bottom: -5px; + } + } +} + +.super-games__date-container-time-day { + font: $number-mobile; + color: $base-white; + + @media (min-width: $tablet-width) { + font: $number-tablet; + } + + @media (min-width: $desktop-width) { + font: $number-desktop; + } +} + +.super-games__date-container-time-month { + font-size: 12px; + line-height: 12px; + font-weight: 400; + color: $base-white; + margin-left: 5px; + + @media (min-width: $tablet-width) { + font: $small-tablet; + max-width: 40px; + } + + @media (min-width: $desktop-width) { + font: $small-desktop; + } +} + +.super-games__date-container-time { + font: $number-mobile; + color: $base-white; + display: flex; + + @media (min-width: $tablet-width) { + align-items: center; + } + + @media (min-width: $desktop-width) { + font: $number-desktop; + } +} + +.super-games__text { + font: $large-mobile; + color: $base-white; + + @media (min-width: $tablet-width) { + font: $large-tablet; + margin-top: 0; + margin-bottom: 10px; + } + + @media (min-width: $desktop-width) { + font: $large-desktop; + margin-bottom: 32px; + } +} + +.super-games__link { + font: $button-mobile; + text-decoration: none; + color: $base-white; + text-align: center; + border: 2px solid $light-border; + padding: 22px; + + &:hover { + background-color: $main-background; + color: $primary-lighter; + } + + &:focus-visible { + background-color: rgba($color: $main-background, $alpha: 0.8); + border: 2px solid #000000; + outline: none; + color: $primary-lighter; + } + + &:active { + background-color: $main-background; + outline: none; + color: $primary; + } + + @media (min-width: $tablet-width) { + font: $medium-button-tablet; + padding: 25px; + } + + @media (min-width: $desktop-width) { + padding-top: 26px; + padding-bottom: 24px; + } +} + +.super-games__link--disabled { + cursor: default; + color: $base-white; + opacity: 0.5; + background-color: transparent; + pointer-events: none; +} + +.super-games__image { + display: block; + background-color: #000145; + + @media (min-width: $tablet-width) { + object-fit: cover; + } + + @media (min-width: $desktop-width) { + margin-top: -1px; + } +} diff --git a/source/styles/common/README.md b/source/styles/common/README.md new file mode 100644 index 0000000..05303f1 --- /dev/null +++ b/source/styles/common/README.md @@ -0,0 +1,33 @@ +# Папка для общих стилей (не БЭМ-блоки) + +_fonts.scss_ +```scss +@font-face { + +} +``` + +_variables.scss_ +```scss +$color-basis: #000000; +$color-accent: #ffffff; +``` + +_global.scss_ +```scss +*, +*::before, +*::after { + box-sizing: border-box; +} + +img { + max-width: 100%; + height: auto; + object-fit: contain; +} + +body { + margin: 0; +} +``` diff --git a/source/styles/common/fonts.scss b/source/styles/common/fonts.scss new file mode 100644 index 0000000..8f83030 --- /dev/null +++ b/source/styles/common/fonts.scss @@ -0,0 +1,8 @@ +$primary-font: "Alumni Sans", "PT Sans", serif; +$secondary-font: "Roboto Condensed", "Arial", sans-serif; + +@include font-face("Alumni Sans", 600, normal, url("../../fonts/alumni-sans-semi-bold.woff2") format("woff2")); +@include font-face("Alumni Sans", 800, normal, url("../../fonts/alumni-sans-extra-bold.woff2") format("woff2")); +@include font-face("Roboto Condensed", 400, normal, url("../../fonts/roboto-condensed-regular.woff2") format("woff2")); +@include font-face("Roboto Condensed", 300, normal, url("../../fonts/roboto-condensed-light.woff2") format("woff2")); +@include font-face("Roboto Condensed", 700, normal, url("../../fonts/roboto-condensed-bold.woff2") format("woff2")); diff --git a/source/styles/common/global.scss b/source/styles/common/global.scss new file mode 100644 index 0000000..9ab9308 --- /dev/null +++ b/source/styles/common/global.scss @@ -0,0 +1,13 @@ +html { + height: 100%; +} + +body { + font-size: 16px; + line-height: 24px; + margin: 0; + padding: 0; + min-width: 320px; + box-sizing: border-box; + color: $primary; +} diff --git a/source/styles/common/mixin.scss b/source/styles/common/mixin.scss new file mode 100644 index 0000000..4f85884 --- /dev/null +++ b/source/styles/common/mixin.scss @@ -0,0 +1,17 @@ +@mixin font-face($font-family, $font-weight, $font-style, $font-src) { + @font-face { + font-family: $font-family; + font-weight: $font-weight; + font-style: $font-style; + font-display: swap; + src: $font-src; + } +} + +@mixin list-style-none { + list-style: none; + margin-left: 0; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; +} diff --git a/source/styles/common/variables.scss b/source/styles/common/variables.scss new file mode 100644 index 0000000..49e3efd --- /dev/null +++ b/source/styles/common/variables.scss @@ -0,0 +1,130 @@ +/* Global Variables */ +$mobile-only-width: 767px; +$tablet-width: 768px; +$desktop-width: 1366px; + +/* Text-color */ + +$primary: #102654; +$base-white: #ffffff; +$primary-lighter: #103aae; +$text-grad: -51deg, #0041ca 0%, #0041ca 50%, #d10a42 100%; + +/* Button Colors */ + +$light-border: #ffffff; +$dark-border: #102654; +$lighter-border: #1c3374; +$button-grad: -80deg, #003eb7 0%, #ed0233 80%, #ed0233 100%; +$tabs-status: #d10a42; + +/* Background Colors */ + +$main-background: #ffffff; +$white-background: #ffffff; +$auxiliary-background: #f8f9fc; +$banner-background: #ed0233; +$darker-background: #102654; +$grad-background: 90deg, #1c3477 0%, #1a3578 39%, #73184b 76%, #b4022a 100%; +$ultra-darker-background: #030a1a; +$ancillary-block-background: #1c3374; + +/* Icon Colors */ + +$light-icons: #ffffff; +$darker-icons: #102654; + +/* Forms Colors */ + +$base-form: #ffffff; +$wrong-form: #ff121f; + + +/* Desktop Text Style */ + +$h1-desktop: 800 92px / 110px $primary-font; +$h2-desktop: 600 82px / 96px $primary-font; +$h3-desktop: 600 54px / 54px $primary-font; +$h4-desktop: 700 26px / 26px $secondary-font; +$h5-desktop: 400 24px / 24px $secondary-font; +$h6-desktop: 400 22px / 22px $secondary-font; + +// --------------------------------- + +$large-desktop: 300 18px / 24px $secondary-font; +$medium-desktop: 300 16px / 24px $secondary-font; +$small-desktop: 400 14px / 22px $secondary-font; + +// --------------------------------- + +$tabs-lined-desktop: 400 20px / 20px $secondary-font; +$tabs-button-desktop: 400 18px / 18px $secondary-font; +$large-button-desktop: 700 14px / 14px $secondary-font; +$medium-button-desktop: 700 12px / 12px $secondary-font; + +// --------------------------------- + +$largest-number-desktop: 700 100px / 150% $secondary-font; +$large-number-desktop: 700 70px / 70px $secondary-font; +$medium-number-desktop: 700 60px / 150% $secondary-font; +$number-desktop: 700 40px / 40px $secondary-font; + + +/* Tablet Text Style */ + +$h1-tablet: 800 72px / 85px $primary-font; +$h2-tablet: 600 48px / 54px $primary-font; +$h3-tablet: 600 42px / 42px $primary-font; +$h4-tablet: 700 24px / 24px $secondary-font; +$h5-tablet: 400 22px / 22px $secondary-font; +$h6-tablet: 400 20px / 20px $secondary-font; + +// --------------------------------- + +$large-tablet: 300 18px / 24px $secondary-font; +$medium-tablet: 300 16px / 24px $secondary-font; +$small-tablet: 400 14px / 22px $secondary-font; + +// --------------------------------- + +$tabs-lined-tablet: 400 18px / 18px $secondary-font; +$tabs-button-tablet: 400 18px / 18px $secondary-font; +$large-button-tablet: 700 14px / 14px $secondary-font; +$medium-button-tablet: 700 12px / 12px $secondary-font; + +// --------------------------------- + +$largest-number-tablet: 700 100px / 150% $secondary-font; +$large-number-tablet: 700 70px / 70px $secondary-font; +$medium-number-tablet: 700 60px / 150% $secondary-font; +$number-tablet: 700 24px / 24px $secondary-font; + + +/* Mobil Text Style */ + +$h1-mobile: 800 62px / 62px $primary-font; +$h2-mobile: 600 48px / 54px $primary-font; +$h3-mobile: 600 32px / 32px $primary-font; +$h4-mobile: 700 22px / 22px $secondary-font; +$h5-mobile: 400 20px / 20px $secondary-font; +$h6-mobile: 400 18px / 20px $secondary-font; + +// --------------------------------- + +$large-mobile: 300 16px / 20px $secondary-font; +$medium-mobile: 300 14px / 22px $secondary-font; +$small-mobile: 400 14px / 20px $secondary-font; + +// --------------------------------- + +$tabs-lined-mobile: 400 16px / 16px $secondary-font; +$tabs-button-mobile: 400 16px / 16px $secondary-font; +$large-button-mobile: 700 14px / 14px $secondary-font; +$button-mobile: 700 12px / 12px $secondary-font; + +// --------------------------------- + +$largest-number-mobile: 700 80px / 150% $secondary-font; +$large-number-mobile: 700 64px / 64px $secondary-font; +$medium-number-mobile: 700 48px / 150% $secondary-font; +$number-mobile: 700 24px / 24px $secondary-font; diff --git a/source/styles/common/visually-hidden.scss b/source/styles/common/visually-hidden.scss new file mode 100644 index 0000000..432a938 --- /dev/null +++ b/source/styles/common/visually-hidden.scss @@ -0,0 +1,10 @@ +.visually-hidden { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + border: 0; + clip: rect(0 0 0 0); + overflow: hidden; +} diff --git a/source/styles/normalize.scss b/source/styles/normalize.scss new file mode 100644 index 0000000..94c872b --- /dev/null +++ b/source/styles/normalize.scss @@ -0,0 +1,361 @@ +/* stylelint-disable */ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** +* Remove the margin in all browsers. +*/ + +body { + margin: 0; +} + +/** +* Render the `main` element consistently in IE. +*/ + +main { + display: block; +} + +/** +* Correct the font size and margin on `h1` elements within `section` and +* `article` contexts in Chrome, Firefox, and Safari. +*/ + +h1 { + margin: 0.67em 0; + + font-size: 2em; +} + +/* Grouping content + ========================================================================== */ + +/** +* 1. Add the correct box sizing in Firefox. +* 2. Show the overflow in Edge and IE. +*/ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** +* 1. Correct the inheritance and scaling of font size in all browsers. +* 2. Correct the odd `em` font sizing in all browsers. +*/ + +pre { + font-size: 1em; /* 2 */ + font-family: monospace, monospace; /* 1 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** +* Remove the gray background on active links in IE 10. +*/ + +a { + background-color: transparent; +} + +/** +* 1. Remove the bottom border in Chrome 57- +* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. +*/ + +abbr[title] { + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ + + border-bottom: none; /* 1 */ +} + +/** +* Add the correct font weight in Chrome, Edge, and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/** +* 1. Correct the inheritance and scaling of font size in all browsers. +* 2. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp { + font-size: 1em; /* 2 */ + font-family: monospace, monospace; /* 1 */ +} + +/** +* Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/** +* Prevent `sub` and `sup` elements from affecting the line height in +* all browsers. +*/ + +sub, +sup { + position: relative; + + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** +* Remove the border on images inside links in IE 10. +*/ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** +* 1. Change the font styles in all browsers. +* 2. Remove the margin in Firefox and Safari. +*/ + +button, +input, +optgroup, +select, +textarea { + margin: 0; /* 2 */ + + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + font-family: inherit; /* 1 */ +} + +/** +* Show the overflow in IE. +* 1. Show the overflow in Edge. +*/ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** +* Remove the inheritance of text transform in Edge, Firefox, and IE. +* 1. Remove the inheritance of text transform in Firefox. +*/ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** +* Correct the inability to style clickable types in iOS and Safari. +*/ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** +* Remove the inner border and padding in Firefox. +*/ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + + border-style: none; +} + +/** +* Restore the focus styles unset by the previous rule. +*/ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** +* Correct the padding in Firefox. +*/ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** +* 1. Correct the text wrapping in Edge and IE. +* 2. Correct the color inheritance from `fieldset` elements in IE. +* 3. Remove the padding so developers are not caught out when they zero out +* `fieldset` elements in all browsers. +*/ + +legend { + display: table; /* 1 */ + box-sizing: border-box; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + + color: inherit; /* 2 */ + white-space: normal; /* 1 */ +} + +/** +* Add the correct vertical alignment in Chrome, Firefox, and Opera. +*/ + +progress { + vertical-align: baseline; +} + +/** +* Remove the default vertical scrollbar in IE 10+. +*/ + +textarea { + overflow: auto; +} + +/** +* 1. Add the correct box sizing in IE 10. +* 2. Remove the padding in IE 10. +*/ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** +* Correct the cursor style of increment and decrement buttons in Chrome. +*/ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** +* 1. Correct the odd appearance in Chrome and Safari. +* 2. Correct the outline style in Safari. +*/ + +[type="search"] { + outline-offset: -2px; /* 2 */ + + -webkit-appearance: textfield; /* 1 */ +} + +/** +* Remove the inner padding in Chrome and Safari on macOS. +*/ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** +* 1. Correct the inability to style clickable types in iOS and Safari. +* 2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + font: inherit; /* 2 */ + + -webkit-appearance: button; /* 1 */ +} + +/* Interactive + ========================================================================== */ + +/* +* Add the correct display in Edge, IE 10+, and Firefox. +*/ + +details { + display: block; +} + +/* +* Add the correct display in all browsers. +*/ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** +* Add the correct display in IE 10+. +*/ + +template { + display: none; +} + +/** +* Add the correct display in IE 10. +*/ + +[hidden] { + display: none; +} diff --git a/source/styles/styles.scss b/source/styles/styles.scss new file mode 100644 index 0000000..8aa802a --- /dev/null +++ b/source/styles/styles.scss @@ -0,0 +1,29 @@ +/* Vendor */ +@import "../vendor/swiper-bundle/swiper.css"; +@import "../vendor/swiper-bundle/modules/navigation.css"; +@import "normalize.scss"; +@import "swiper.scss"; + +/* GLOBAL */ +@import "./common/mixin.scss"; +@import "./common/fonts.scss"; +@import "./common/variables.scss"; +@import "./common/global.scss"; +@import "./common/visually-hidden.scss"; + +/* BLOCKS */ +@import "./blocks/page-body.scss"; +@import "./blocks/button.scss"; +@import "./blocks/page-main.scss"; +@import "./blocks/main-wrapper.scss"; +@import "./blocks/hero.scss"; +@import "./blocks/about-us.scss"; +@import "./blocks/abonements.scss"; +@import "./blocks/super-games.scss"; +@import "./blocks/juri.scss"; +@import "./blocks/benefits.scss"; +@import "./blocks/offers.scss"; +@import "./blocks/faq.scss"; +@import "./blocks/reviews.scss"; +@import "./blocks/form.scss"; +@import "./blocks/page-footer.scss"; diff --git a/source/styles/swiper.scss b/source/styles/swiper.scss new file mode 100644 index 0000000..5f22db9 --- /dev/null +++ b/source/styles/swiper.scss @@ -0,0 +1,135 @@ +/* stylelint-disable */ +.swiper--reviews { + display: flex; +} + +.swiper-slide.swiper-slide--reviews { + flex-grow: 1; + height: auto; + display: flex; +} + +.swiper-button-next.swiper-button-next--juri, +.swiper-button-prev.swiper-button-prev--juri, +.swiper-button-prev.swiper-button-prev--reviews, +.swiper-button-next.swiper-button-next--reviews { + display: none; + + @media (min-width: 768px) { + display: block; + color: #102654; + top: calc(50% - 26px); + margin: 0; + + &::after { + font-size: 34px; + + } + } + + @media (min-width: 1366px) { + top: calc(50% - 26px); + } +} + +.swiper-button-prev.swiper-button-prev--juri { + @media (min-width: 768px) { + left: -70px; + } +} + +.swiper-button-next.swiper-button-next--juri { + @media (min-width: 768px) { + right: -70px; + } + + @media (min-width: 1366px) { + right: -72px; + } +} + +.swiper-slide--juri { + position: relative; +} + +.swiper-button-prev.swiper-button-prev--juri, +.swiper-button-next.swiper-button-next--juri, +.swiper-button-prev.swiper-button-prev--reviews, +.swiper-button-next.swiper-button-next--reviews { + box-sizing: border-box; + width: 50px; + height: 50px; + + &:hover { + border: 1px solid #102654; + border-radius: 50%; + } + + &:focus-visible { + border: 1px solid #102654; + border-radius: 50%; + background-color: #e8e8e8; + } + + &:active { + background-color: #102654; + + &::after { + background-color: #ffffff; + } + } + + &::after { + content: ""; + display: block; + width: 18px; + height: 33px; + mask-image: url("../../icons/stack.svg#swiper-arrow"); + background-color: #102654; + mask-repeat: no-repeat; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } +} + +.swiper-button-next.swiper-button-next--juri, +.swiper-button-next.swiper-button-next--reviews { + &::after { + transform: translate(-50%, -50%) rotate(180deg); + } +} + +.swiper-button-disabled { + opacity: 0.3; + pointer-events: none; +} + +.swiper-button-next.swiper-button-next--reviews { + right: -106px; + top: 49%; + + @media (min-width: 768px) { + top: 40%; + } + + @media (min-width: 1366px) { + right: -121px; + top: 40%; + } +} + +.swiper-button-prev.swiper-button-prev--reviews { + left: -106px; + top: 49%; + + @media (min-width: 768px) { + top: 40%; + } + + @media (min-width: 1366px) { + left: -121px; + top: 40%; + } +} diff --git a/source/vendor/README.md b/source/vendor/README.md new file mode 100644 index 0000000..ddaa579 --- /dev/null +++ b/source/vendor/README.md @@ -0,0 +1,33 @@ +# Папка для стилей, скриптов, картинок и других папок от сторонних библиотек +Для удобства внесения сторонних библиотек в ваш проект, вы можете использовать папку vendor. В этой папке вы можете размещать любые файлы, связанные с внешними библиотеками. + +Например, предположим, что вы хотите добавить в проект библиотеку, которая включает в себя как стилевой файл library.css, так и скрипты library.js. Чтобы интегрировать их в ваш проект, следуйте этим шагам: + +Положите файлы библиотеки в папку vendor, как показано ниже: + +```bash +├── source/ +│ └── vendor/ +│ ├── library.css +│ └── library.js +``` + +Если у вас есть несколько библиотек с разными файлами, вы можете группировать файлы одной библиотеки в ее собственную подпапку. Например: +```bash +├── source/ +│ └── vendor/ +│ └── library/ +│ ├── library.css +│ └── library.js +``` + +При сборке вашего проекта, все файлы из папки vendor будут включены в папку build, сохраняя их структуру. Например: +```bash +├── build/ +│ └── vendor/ +│ └── library/ +│ ├── library.css +│ └── library.js +``` + +Таким образом, вы можете удобно организовать и внедрить сторонние библиотеки в ваш проект, сохраняя их структуру в папке vendor. diff --git a/source/vendor/swiper-bundle/LICENSE b/source/vendor/swiper-bundle/LICENSE new file mode 100644 index 0000000..a7876ca --- /dev/null +++ b/source/vendor/swiper-bundle/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2019 Vladimir Kharlampidi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/source/vendor/swiper-bundle/README.md b/source/vendor/swiper-bundle/README.md new file mode 100644 index 0000000..d4e726c --- /dev/null +++ b/source/vendor/swiper-bundle/README.md @@ -0,0 +1,11 @@ +Swiper +========== + +Swiper - is the free and most modern mobile touch slider with hardware accelerated transitions and amazing native behavior. It is intended to be used in mobile websites, mobile web apps, and mobile native/hybrid apps. + +Swiper is not compatible with all platforms, it is a modern touch slider which is focused only on modern apps/platforms to bring the best experience and simplicity. + +# Getting Started + * [Getting Started Guide](https://swiperjs.com/get-started/) + * [API](https://swiperjs.com/swiper-api/) + * [Demos](https://swiperjs.com/demos/) diff --git a/source/vendor/swiper-bundle/modules/a11y-element.css b/source/vendor/swiper-bundle/modules/a11y-element.css new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/source/vendor/swiper-bundle/modules/a11y-element.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/source/vendor/swiper-bundle/modules/a11y-element.min.css b/source/vendor/swiper-bundle/modules/a11y-element.min.css new file mode 100644 index 0000000..78c39d5 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/a11y-element.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/a11y.css b/source/vendor/swiper-bundle/modules/a11y.css new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/source/vendor/swiper-bundle/modules/a11y.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/source/vendor/swiper-bundle/modules/a11y.less b/source/vendor/swiper-bundle/modules/a11y.less new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/source/vendor/swiper-bundle/modules/a11y.less @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/source/vendor/swiper-bundle/modules/a11y.min.css b/source/vendor/swiper-bundle/modules/a11y.min.css new file mode 100644 index 0000000..78c39d5 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/a11y.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/a11y.min.mjs b/source/vendor/swiper-bundle/modules/a11y.min.mjs new file mode 100644 index 0000000..05351d5 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/a11y.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElement,h as elementIndex,m as makeElementsArray}from"../shared/utils.min.mjs";function A11y(e){let{swiper:a,extendParams:t,on:n}=e;t({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null,scrollOnFocus:!0}}),a.a11y={clicked:!1};let i,s,r=null,l=(new Date).getTime();function o(e){const a=r;0!==a.length&&(a.innerHTML="",a.innerHTML=e)}function c(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function d(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function m(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("role",a)}))}function p(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-roledescription",a)}))}function g(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-label",a)}))}function u(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function E(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function f(e){if(13!==e.keyCode&&32!==e.keyCode)return;const t=a.params.a11y,n=e.target;if(!a.pagination||!a.pagination.el||n!==a.pagination.el&&!a.pagination.el.contains(e.target)||e.target.matches(classesToSelector(a.params.pagination.bulletClass))){if(a.navigation&&a.navigation.prevEl&&a.navigation.nextEl){const e=makeElementsArray(a.navigation.prevEl);makeElementsArray(a.navigation.nextEl).includes(n)&&(a.isEnd&&!a.params.loop||a.slideNext(),a.isEnd?o(t.lastSlideMessage):o(t.nextSlideMessage)),e.includes(n)&&(a.isBeginning&&!a.params.loop||a.slidePrev(),a.isBeginning?o(t.firstSlideMessage):o(t.prevSlideMessage))}a.pagination&&n.matches(classesToSelector(a.params.pagination.bulletClass))&&n.click()}}function v(){return a.pagination&&a.pagination.bullets&&a.pagination.bullets.length}function y(){return v()&&a.params.pagination.clickable}const b=(e,a,t)=>{c(e),"BUTTON"!==e.tagName&&(m(e,"button"),e.addEventListener("keydown",f)),g(e,t),function(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-controls",a)}))}(e,a)},h=e=>{s&&s!==e.target&&!s.contains(e.target)&&(i=!0),a.a11y.clicked=!0},A=()=>{i=!1,requestAnimationFrame((()=>{requestAnimationFrame((()=>{a.destroyed||(a.a11y.clicked=!1)}))}))},k=e=>{l=(new Date).getTime()},M=e=>{if(a.a11y.clicked||!a.params.a11y.scrollOnFocus)return;if((new Date).getTime()-l<100)return;const t=e.target.closest(`.${a.params.slideClass}, swiper-slide`);if(!t||!a.slides.includes(t))return;s=t;const n=a.slides.indexOf(t)===a.activeIndex,r=a.params.watchSlidesProgress&&a.visibleSlides&&a.visibleSlides.includes(t);n||r||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(a.isHorizontal()?a.el.scrollLeft=0:a.el.scrollTop=0,requestAnimationFrame((()=>{i||(a.params.loop?a.slideToLoop(parseInt(t.getAttribute("data-swiper-slide-index")),0):a.slideTo(a.slides.indexOf(t),0),i=!1)})))},x=()=>{const e=a.params.a11y;e.itemRoleDescriptionMessage&&p(a.slides,e.itemRoleDescriptionMessage),e.slideRole&&m(a.slides,e.slideRole);const t=a.slides.length;e.slideLabelMessage&&a.slides.forEach(((n,i)=>{const s=a.params.loop?parseInt(n.getAttribute("data-swiper-slide-index"),10):i;g(n,e.slideLabelMessage.replace(/\{\{index\}\}/,s+1).replace(/\{\{slidesLength\}\}/,t))}))},L=()=>{const e=a.params.a11y;a.el.append(r);const t=a.el;e.containerRoleDescriptionMessage&&p(t,e.containerRoleDescriptionMessage),e.containerMessage&&g(t,e.containerMessage);const n=a.wrapperEl,i=e.id||n.getAttribute("id")||`swiper-wrapper-${s=16,void 0===s&&(s=16),"x".repeat(s).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var s;const l=a.params.autoplay&&a.params.autoplay.enabled?"off":"polite";var o;o=i,makeElementsArray(n).forEach((e=>{e.setAttribute("id",o)})),function(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-live",a)}))}(n,l),x();let{nextEl:c,prevEl:d}=a.navigation?a.navigation:{};if(c=makeElementsArray(c),d=makeElementsArray(d),c&&c.forEach((a=>b(a,i,e.nextSlideMessage))),d&&d.forEach((a=>b(a,i,e.prevSlideMessage))),y()){makeElementsArray(a.pagination.el).forEach((e=>{e.addEventListener("keydown",f)}))}getDocument().addEventListener("visibilitychange",k),a.el.addEventListener("focus",M,!0),a.el.addEventListener("focus",M,!0),a.el.addEventListener("pointerdown",h,!0),a.el.addEventListener("pointerup",A,!0)};n("beforeInit",(()=>{r=createElement("span",a.params.a11y.notificationClass),r.setAttribute("aria-live","assertive"),r.setAttribute("aria-atomic","true")})),n("afterInit",(()=>{a.params.a11y.enabled&&L()})),n("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{a.params.a11y.enabled&&x()})),n("fromEdge toEdge afterInit lock unlock",(()=>{a.params.a11y.enabled&&function(){if(a.params.loop||a.params.rewind||!a.navigation)return;const{nextEl:e,prevEl:t}=a.navigation;t&&(a.isBeginning?(u(t),d(t)):(E(t),c(t))),e&&(a.isEnd?(u(e),d(e)):(E(e),c(e)))}()})),n("paginationUpdate",(()=>{a.params.a11y.enabled&&function(){const e=a.params.a11y;v()&&a.pagination.bullets.forEach((t=>{a.params.pagination.clickable&&(c(t),a.params.pagination.renderBullet||(m(t,"button"),g(t,e.paginationBulletMessage.replace(/\{\{index\}\}/,elementIndex(t)+1)))),t.matches(classesToSelector(a.params.pagination.bulletActiveClass))?t.setAttribute("aria-current","true"):t.removeAttribute("aria-current")}))}()})),n("destroy",(()=>{a.params.a11y.enabled&&function(){r&&r.remove();let{nextEl:e,prevEl:t}=a.navigation?a.navigation:{};e=makeElementsArray(e),t=makeElementsArray(t),e&&e.forEach((e=>e.removeEventListener("keydown",f))),t&&t.forEach((e=>e.removeEventListener("keydown",f))),y()&&makeElementsArray(a.pagination.el).forEach((e=>{e.removeEventListener("keydown",f)}));getDocument().removeEventListener("visibilitychange",k),a.el&&"string"!=typeof a.el&&(a.el.removeEventListener("focus",M,!0),a.el.removeEventListener("pointerdown",h,!0),a.el.removeEventListener("pointerup",A,!0))}()}))}export{A11y as default}; +//# sourceMappingURL=a11y.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/a11y.min.mjs.map b/source/vendor/swiper-bundle/modules/a11y.min.mjs.map new file mode 100644 index 0000000..eff8e5e --- /dev/null +++ b/source/vendor/swiper-bundle/modules/a11y.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"a11y.mjs.mjs","names":["getDocument","classesToSelector","createElement","elementIndex","makeElementsArray","A11y","_ref","swiper","extendParams","on","a11y","enabled","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","id","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","Date","getTime","notify","message","notification","length","innerHTML","makeElFocusable","el","forEach","subEl","setAttribute","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","label","disableEl","enableEl","onEnterOrSpaceKey","e","keyCode","params","targetEl","target","pagination","contains","matches","bulletClass","navigation","prevEl","nextEl","prevEls","includes","isEnd","loop","slideNext","isBeginning","slidePrev","click","hasPagination","bullets","hasClickablePagination","clickable","initNavEl","wrapperId","tagName","addEventListener","controls","addElControls","handlePointerDown","handlePointerUp","requestAnimationFrame","destroyed","onVisibilityChange","handleFocus","slideEl","closest","slideClass","slides","isActive","indexOf","activeIndex","isVisible","watchSlidesProgress","visibleSlides","sourceCapabilities","firesTouchEvents","isHorizontal","scrollLeft","scrollTop","slideToLoop","parseInt","getAttribute","slideTo","initSlides","slidesLength","index","slideIndex","replace","init","append","containerEl","wrapperEl","size","repeat","Math","round","random","toString","live","autoplay","addElLive","rewind","updateNavigation","bulletEl","renderBullet","bulletActiveClass","removeAttribute","updatePagination","remove","removeEventListener","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/a11y.mjs b/source/vendor/swiper-bundle/modules/a11y.mjs new file mode 100644 index 0000000..4e7c85b --- /dev/null +++ b/source/vendor/swiper-bundle/modules/a11y.mjs @@ -0,0 +1,374 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs'; + +function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null, + scrollOnFocus: true + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + let preventFocusHandler; + let focusTargetSlideEl; + let visibilityChangedTimestamp = new Date().getTime(); + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { + const prevEls = makeElementsArray(swiper.navigation.prevEl); + const nextEls = makeElementsArray(swiper.navigation.nextEl); + if (nextEls.includes(targetEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (prevEls.includes(targetEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = e => { + if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { + preventFocusHandler = true; + } + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + preventFocusHandler = false; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const onVisibilityChange = e => { + visibilityChangedTimestamp = new Date().getTime(); + }; + const handleFocus = e => { + if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; + if (new Date().getTime() - visibilityChangedTimestamp < 100) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + focusTargetSlideEl = slideEl; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + requestAnimationFrame(() => { + if (preventFocusHandler) return; + if (swiper.params.loop) { + swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); + } else { + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + } + preventFocusHandler = false; + }); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + // Tab focus + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); +} + +export { A11y as default }; diff --git a/source/vendor/swiper-bundle/modules/a11y.scss b/source/vendor/swiper-bundle/modules/a11y.scss new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/source/vendor/swiper-bundle/modules/a11y.scss @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/source/vendor/swiper-bundle/modules/autoplay-element.css b/source/vendor/swiper-bundle/modules/autoplay-element.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/autoplay-element.min.css b/source/vendor/swiper-bundle/modules/autoplay-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/autoplay.css b/source/vendor/swiper-bundle/modules/autoplay.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/autoplay.less b/source/vendor/swiper-bundle/modules/autoplay.less new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/autoplay.min.css b/source/vendor/swiper-bundle/modules/autoplay.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/autoplay.min.mjs b/source/vendor/swiper-bundle/modules/autoplay.min.mjs new file mode 100644 index 0000000..6c6047e --- /dev/null +++ b/source/vendor/swiper-bundle/modules/autoplay.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";function Autoplay(e){let a,t,{swiper:n,extendParams:i,on:r,emit:o,params:s}=e;n.autoplay={running:!1,paused:!1,timeLeft:0},i({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let l,p,u,d,y,m,c,g,v=s&&s.autoplay?s.autoplay.delay:3e3,T=s&&s.autoplay?s.autoplay.delay:3e3,f=(new Date).getTime();function w(e){n&&!n.destroyed&&n.wrapperEl&&e.target===n.wrapperEl&&(n.wrapperEl.removeEventListener("transitionend",w),g||e.detail&&e.detail.bySwiperTouchMove||S())}const b=()=>{if(n.destroyed||!n.autoplay.running)return;n.autoplay.paused?p=!0:p&&(T=l,p=!1);const e=n.autoplay.paused?l:f+T-(new Date).getTime();n.autoplay.timeLeft=e,o("autoplayTimeLeft",e,e/v),t=requestAnimationFrame((()=>{b()}))},E=e=>{if(n.destroyed||!n.autoplay.running)return;cancelAnimationFrame(t),b();let i=void 0===e?n.params.autoplay.delay:e;v=n.params.autoplay.delay,T=n.params.autoplay.delay;const r=(()=>{let e;if(e=n.virtual&&n.params.virtual.enabled?n.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:n.slides[n.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(i=r,v=r,T=r),l=i;const s=n.params.speed,p=()=>{n&&!n.destroyed&&(n.params.autoplay.reverseDirection?!n.isBeginning||n.params.loop||n.params.rewind?(n.slidePrev(s,!0,!0),o("autoplay")):n.params.autoplay.stopOnLastSlide||(n.slideTo(n.slides.length-1,s,!0,!0),o("autoplay")):!n.isEnd||n.params.loop||n.params.rewind?(n.slideNext(s,!0,!0),o("autoplay")):n.params.autoplay.stopOnLastSlide||(n.slideTo(0,s,!0,!0),o("autoplay")),n.params.cssMode&&(f=(new Date).getTime(),requestAnimationFrame((()=>{E()}))))};return i>0?(clearTimeout(a),a=setTimeout((()=>{p()}),i)):requestAnimationFrame((()=>{p()})),i},L=()=>{f=(new Date).getTime(),n.autoplay.running=!0,E(),o("autoplayStart")},D=()=>{n.autoplay.running=!1,clearTimeout(a),cancelAnimationFrame(t),o("autoplayStop")},O=(e,t)=>{if(n.destroyed||!n.autoplay.running)return;clearTimeout(a),e||(c=!0);const i=()=>{o("autoplayPause"),n.params.autoplay.waitForTransition?n.wrapperEl.addEventListener("transitionend",w):S()};if(n.autoplay.paused=!0,t)return m&&(l=n.params.autoplay.delay),m=!1,void i();const r=l||n.params.autoplay.delay;l=r-((new Date).getTime()-f),n.isEnd&&l<0&&!n.params.loop||(l<0&&(l=0),i())},S=()=>{n.isEnd&&l<0&&!n.params.loop||n.destroyed||!n.autoplay.running||(f=(new Date).getTime(),c?(c=!1,E(l)):E(),n.autoplay.paused=!1,o("autoplayResume"))},M=()=>{if(n.destroyed||!n.autoplay.running)return;const e=getDocument();"hidden"===e.visibilityState&&(c=!0,O(!0)),"visible"===e.visibilityState&&S()},h=e=>{"mouse"===e.pointerType&&(c=!0,g=!0,n.animating||n.autoplay.paused||O(!0))},A=e=>{"mouse"===e.pointerType&&(g=!1,n.autoplay.paused&&S())};r("init",(()=>{n.params.autoplay.enabled&&(n.params.autoplay.pauseOnMouseEnter&&(n.el.addEventListener("pointerenter",h),n.el.addEventListener("pointerleave",A)),getDocument().addEventListener("visibilitychange",M),L())})),r("destroy",(()=>{n.el&&"string"!=typeof n.el&&(n.el.removeEventListener("pointerenter",h),n.el.removeEventListener("pointerleave",A)),getDocument().removeEventListener("visibilitychange",M),n.autoplay.running&&D()})),r("_freeModeStaticRelease",(()=>{(d||c)&&S()})),r("_freeModeNoMomentumRelease",(()=>{n.params.autoplay.disableOnInteraction?D():O(!0,!0)})),r("beforeTransitionStart",((e,a,t)=>{!n.destroyed&&n.autoplay.running&&(t||!n.params.autoplay.disableOnInteraction?O(!0,!0):D())})),r("sliderFirstMove",(()=>{!n.destroyed&&n.autoplay.running&&(n.params.autoplay.disableOnInteraction?D():(u=!0,d=!1,c=!1,y=setTimeout((()=>{c=!0,d=!0,O(!0)}),200)))})),r("touchEnd",(()=>{if(!n.destroyed&&n.autoplay.running&&u){if(clearTimeout(y),clearTimeout(a),n.params.autoplay.disableOnInteraction)return d=!1,void(u=!1);d&&n.params.cssMode&&S(),d=!1,u=!1}})),r("slideChange",(()=>{!n.destroyed&&n.autoplay.running&&(m=!0)})),Object.assign(n.autoplay,{start:L,stop:D,pause:O,resume:S})}export{Autoplay as default}; +//# sourceMappingURL=autoplay.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/autoplay.min.mjs.map b/source/vendor/swiper-bundle/modules/autoplay.min.mjs.map new file mode 100644 index 0000000..9e326f9 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/autoplay.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"autoplay.mjs.mjs","names":["getDocument","Autoplay","_ref","timeout","raf","swiper","extendParams","on","emit","params","autoplay","running","paused","timeLeft","enabled","delay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","isTouched","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","Date","getTime","onTransitionEnd","e","destroyed","wrapperEl","target","removeEventListener","detail","bySwiperTouchMove","resume","calcTimeLeft","requestAnimationFrame","run","delayForce","cancelAnimationFrame","currentSlideDelay","activeSlideEl","virtual","slides","filter","slideEl","classList","contains","activeIndex","parseInt","getAttribute","getSlideDelay","Number","isNaN","speed","proceed","isBeginning","loop","rewind","slidePrev","slideTo","length","isEnd","slideNext","cssMode","clearTimeout","setTimeout","start","stop","pause","internal","reset","addEventListener","onVisibilityChange","document","visibilityState","onPointerEnter","pointerType","animating","onPointerLeave","el","_s","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/autoplay.mjs b/source/vendor/swiper-bundle/modules/autoplay.mjs new file mode 100644 index 0000000..732541d --- /dev/null +++ b/source/vendor/swiper-bundle/modules/autoplay.mjs @@ -0,0 +1,304 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; + +/* eslint no-underscore-dangle: "off" */ +/* eslint no-use-before-define: "off" */ +function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + } + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); +} + +export { Autoplay as default }; diff --git a/source/vendor/swiper-bundle/modules/autoplay.scss b/source/vendor/swiper-bundle/modules/autoplay.scss new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/controller-element.css b/source/vendor/swiper-bundle/modules/controller-element.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/controller-element.min.css b/source/vendor/swiper-bundle/modules/controller-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/controller.css b/source/vendor/swiper-bundle/modules/controller.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/controller.less b/source/vendor/swiper-bundle/modules/controller.less new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/controller.min.css b/source/vendor/swiper-bundle/modules/controller.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/controller.min.mjs b/source/vendor/swiper-bundle/modules/controller.min.mjs new file mode 100644 index 0000000..f9263b0 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/controller.min.mjs @@ -0,0 +1,2 @@ +import{n as nextTick,k as elementTransitionEnd}from"../shared/utils.min.mjs";function Controller(t){let{swiper:r,extendParams:e,on:n}=t;function o(t,r){const e=function(){let t,r,e;return(n,o)=>{for(r=-1,t=n.length;t-r>1;)e=t+r>>1,n[e]<=o?r=e:t=e;return t}}();let n,o;return this.x=t,this.y=r,this.lastIndex=t.length-1,this.interpolate=function(t){return t?(o=e(this.x,t),n=o-1,(t-this.x[n])*(this.y[o]-this.y[n])/(this.x[o]-this.x[n])+this.y[n]):0},this}function l(){r.controller.control&&r.controller.spline&&(r.controller.spline=void 0,delete r.controller.spline)}e({controller:{control:void 0,inverse:!1,by:"slide"}}),r.controller={control:void 0},n("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof r.params.controller.control||r.params.controller.control instanceof HTMLElement)){("string"==typeof r.params.controller.control?[...document.querySelectorAll(r.params.controller.control)]:[r.params.controller.control]).forEach((t=>{if(r.controller.control||(r.controller.control=[]),t&&t.swiper)r.controller.control.push(t.swiper);else if(t){const e=`${r.params.eventsPrefix}init`,n=o=>{r.controller.control.push(o.detail[0]),r.update(),t.removeEventListener(e,n)};t.addEventListener(e,n)}}))}else r.controller.control=r.params.controller.control})),n("update",(()=>{l()})),n("resize",(()=>{l()})),n("observerUpdate",(()=>{l()})),n("setTranslate",((t,e,n)=>{r.controller.control&&!r.controller.control.destroyed&&r.controller.setTranslate(e,n)})),n("setTransition",((t,e,n)=>{r.controller.control&&!r.controller.control.destroyed&&r.controller.setTransition(e,n)})),Object.assign(r.controller,{setTranslate:function(t,e){const n=r.controller.control;let l,s;const i=r.constructor;function a(t){if(t.destroyed)return;const e=r.rtlTranslate?-r.translate:r.translate;"slide"===r.params.controller.by&&(!function(t){r.controller.spline=r.params.loop?new o(r.slidesGrid,t.slidesGrid):new o(r.snapGrid,t.snapGrid)}(t),s=-r.controller.spline.interpolate(-e)),s&&"container"!==r.params.controller.by||(l=(t.maxTranslate()-t.minTranslate())/(r.maxTranslate()-r.minTranslate()),!Number.isNaN(l)&&Number.isFinite(l)||(l=1),s=(e-r.minTranslate())*l+t.minTranslate()),r.params.controller.inverse&&(s=t.maxTranslate()-s),t.updateProgress(s),t.setTranslate(s,r),t.updateActiveIndex(),t.updateSlidesClasses()}if(Array.isArray(n))for(let t=0;t{e.updateAutoHeight()})),elementTransitionEnd(e.wrapperEl,(()=>{o&&e.transitionEnd()}))))}if(Array.isArray(o))for(l=0;l>"] }] */ +function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; + controlElements.forEach(controlElement => { + if (!swiper.controller.control) swiper.controller.control = []; + if (controlElement && controlElement.swiper) { + swiper.controller.control.push(controlElement.swiper); + } else if (controlElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onControllerSwiper = e => { + swiper.controller.control.push(e.detail[0]); + swiper.update(); + controlElement.removeEventListener(eventName, onControllerSwiper); + }; + controlElement.addEventListener(eventName, onControllerSwiper); + } + }); + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); +} + +export { Controller as default }; diff --git a/source/vendor/swiper-bundle/modules/controller.scss b/source/vendor/swiper-bundle/modules/controller.scss new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/effect-cards-element.css b/source/vendor/swiper-bundle/modules/effect-cards-element.css new file mode 100644 index 0000000..f831010 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cards-element.css @@ -0,0 +1,9 @@ +.swiper-cards { + overflow: visible; +} +.swiper-cards ::slotted(swiper-slide) { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/source/vendor/swiper-bundle/modules/effect-cards-element.min.css b/source/vendor/swiper-bundle/modules/effect-cards-element.min.css new file mode 100644 index 0000000..97c6648 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cards-element.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-cards.css b/source/vendor/swiper-bundle/modules/effect-cards.css new file mode 100644 index 0000000..4b9f64b --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cards.css @@ -0,0 +1,9 @@ +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/source/vendor/swiper-bundle/modules/effect-cards.less b/source/vendor/swiper-bundle/modules/effect-cards.less new file mode 100644 index 0000000..ab90342 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cards.less @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/source/vendor/swiper-bundle/modules/effect-cards.min.css b/source/vendor/swiper-bundle/modules/effect-cards.min.css new file mode 100644 index 0000000..1769ef2 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cards.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-cards.min.mjs b/source/vendor/swiper-bundle/modules/effect-cards.min.mjs new file mode 100644 index 0000000..2b2e86c --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cards.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCards(e){let{swiper:t,extendParams:a,on:s}=e;a({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}});effectInit({effect:"cards",swiper:t,on:s,setTranslate:()=>{const{slides:e,activeIndex:a,rtlTranslate:s}=t,r=t.params.cardsEffect,{startTranslate:i,isTouched:n}=t.touchEventsData,o=s?-t.translate:t.translate;for(let l=0;l0&&c<1&&(n||t.params.cssMode)&&o-1&&(n||t.params.cssMode)&&o>i;if(E||T){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;w+=-28*c*e,u+=-.5*e,S+=96*e,h=-25*e*Math.abs(c)+"%"}if(p=c<0?`calc(${p}px ${s?"-":"+"} (${S*Math.abs(c)}%))`:c>0?`calc(${p}px ${s?"-":"+"} (-${S*Math.abs(c)}%))`:`${p}px`,!t.isHorizontal()){const e=h;h=p,p=e}const g=c<0?""+(1+(1-u)*c):""+(1-(1-u)*c),x=`\n translate3d(${p}, ${h}, ${M}px)\n rotateZ(${r.rotate?s?-w:w:0}deg)\n scale(${g})\n `;if(r.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=createShadow("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(f))+e.length;effectTarget(r,d).style.transform=x}},setTransition:e=>{const a=t.slides.map((e=>getSlideTransformEl(e)));a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:a})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}export{EffectCards as default}; +//# sourceMappingURL=effect-cards.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-cards.min.mjs.map b/source/vendor/swiper-bundle/modules/effect-cards.min.mjs.map new file mode 100644 index 0000000..e23f337 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cards.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cards.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectCards","_ref","swiper","extendParams","on","cardsEffect","slideShadows","rotate","perSlideRotate","perSlideOffset","effect","setTranslate","slides","activeIndex","rtlTranslate","rtl","params","startTranslate","isTouched","touchEventsData","currentTranslate","translate","i","length","slideEl","slideProgress","progress","Math","min","max","offset","swiperSlideOffset","centeredSlides","cssMode","wrapperEl","style","transform","minTranslate","tX","tY","tZ","abs","scale","tXAdd","slideIndex","virtual","enabled","from","isSwipeToNext","isSwipeToPrev","subProgress","isHorizontal","prevY","scaleString","shadowEl","querySelector","opacity","zIndex","round","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","perspective","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-cards.mjs b/source/vendor/swiper-bundle/modules/effect-cards.mjs new file mode 100644 index 0000000..27e577a --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cards.mjs @@ -0,0 +1,125 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCards as default }; diff --git a/source/vendor/swiper-bundle/modules/effect-cards.scss b/source/vendor/swiper-bundle/modules/effect-cards.scss new file mode 100644 index 0000000..ab90342 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cards.scss @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/source/vendor/swiper-bundle/modules/effect-coverflow-element.css b/source/vendor/swiper-bundle/modules/effect-coverflow-element.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/effect-coverflow-element.min.css b/source/vendor/swiper-bundle/modules/effect-coverflow-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/effect-coverflow.css b/source/vendor/swiper-bundle/modules/effect-coverflow.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/effect-coverflow.less b/source/vendor/swiper-bundle/modules/effect-coverflow.less new file mode 100644 index 0000000..ac504bf --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-coverflow.less @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/source/vendor/swiper-bundle/modules/effect-coverflow.min.css b/source/vendor/swiper-bundle/modules/effect-coverflow.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/effect-coverflow.min.mjs b/source/vendor/swiper-bundle/modules/effect-coverflow.min.mjs new file mode 100644 index 0000000..6c1d2e1 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-coverflow.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{g as getSlideTransformEl,o as getRotateFix}from"../shared/utils.min.mjs";function EffectCoverflow(e){let{swiper:t,extendParams:s,on:r}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}});effectInit({effect:"coverflow",swiper:t,on:r,setTranslate:()=>{const{width:e,height:s,slides:r,slidesSizesGrid:o}=t,a=t.params.coverflowEffect,i=t.isHorizontal(),l=t.translate,f=i?e/2-l:s/2-l,d=i?a.rotate:-a.rotate,c=a.depth,h=getRotateFix(t);for(let e=0,t=r.length;e0?n:0),s&&(s.style.opacity=-n>0?-n:0)}}},setTransition:e=>{t.slides.map((e=>getSlideTransformEl(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})}export{EffectCoverflow as default}; +//# sourceMappingURL=effect-coverflow.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-coverflow.min.mjs.map b/source/vendor/swiper-bundle/modules/effect-coverflow.min.mjs.map new file mode 100644 index 0000000..b2820c2 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-coverflow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-coverflow.mjs.mjs","names":["createShadow","effectInit","effectTarget","getSlideTransformEl","getRotateFix","EffectCoverflow","_ref","swiper","extendParams","on","coverflowEffect","rotate","stretch","depth","scale","modifier","slideShadows","effect","setTranslate","width","swiperWidth","height","swiperHeight","slides","slidesSizesGrid","params","isHorizontal","transform","translate","center","r","i","length","slideEl","slideSize","centerOffset","swiperSlideOffset","offsetMultiplier","rotateY","rotateX","translateZ","Math","abs","indexOf","parseFloat","translateY","translateX","slideTransform","style","zIndex","round","shadowBeforeEl","querySelector","shadowAfterEl","opacity","setTransition","duration","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","perspective","overwriteParams","watchSlidesProgress"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-coverflow.mjs b/source/vendor/swiper-bundle/modules/effect-coverflow.mjs new file mode 100644 index 0000000..17e0949 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-coverflow.mjs @@ -0,0 +1,104 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs'; + +function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + const r = getRotateFix(swiper); + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); +} + +export { EffectCoverflow as default }; diff --git a/source/vendor/swiper-bundle/modules/effect-coverflow.scss b/source/vendor/swiper-bundle/modules/effect-coverflow.scss new file mode 100644 index 0000000..ac504bf --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-coverflow.scss @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/source/vendor/swiper-bundle/modules/effect-creative-element.css b/source/vendor/swiper-bundle/modules/effect-creative-element.css new file mode 100644 index 0000000..6ccf22b --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-creative-element.css @@ -0,0 +1,6 @@ +.swiper-creative ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} diff --git a/source/vendor/swiper-bundle/modules/effect-creative-element.min.css b/source/vendor/swiper-bundle/modules/effect-creative-element.min.css new file mode 100644 index 0000000..70fb705 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-creative-element.min.css @@ -0,0 +1 @@ +.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-creative.css b/source/vendor/swiper-bundle/modules/effect-creative.css new file mode 100644 index 0000000..2082494 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-creative.css @@ -0,0 +1,6 @@ +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} diff --git a/source/vendor/swiper-bundle/modules/effect-creative.less b/source/vendor/swiper-bundle/modules/effect-creative.less new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-creative.less @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/source/vendor/swiper-bundle/modules/effect-creative.min.css b/source/vendor/swiper-bundle/modules/effect-creative.min.css new file mode 100644 index 0000000..404da2c --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-creative.min.css @@ -0,0 +1 @@ +.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-creative.min.mjs b/source/vendor/swiper-bundle/modules/effect-creative.min.mjs new file mode 100644 index 0000000..789c2c0 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-creative.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl,o as getRotateFix}from"../shared/utils.min.mjs";function EffectCreative(e){let{swiper:t,extendParams:s,on:r}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;effectInit({effect:"creative",swiper:t,on:r,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:r}=t,i=t.params.creativeEffect,{progressMultiplier:o}=i,l=t.params.centeredSlides,n=getRotateFix(t);if(l){const e=r[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(w=i.prev,h=!0),d.forEach(((e,t)=>{d[t]=`calc(${e}px + (${a(w.translate[t])} * ${Math.abs(f*o)}))`})),g.forEach(((e,t)=>{let s=w.rotate[t]*Math.abs(f*o);g[t]=s})),r.style.zIndex=-Math.abs(Math.round(c))+e.length;const y=d.join(", "),u=`rotateX(${n(g[0])}deg) rotateY(${n(g[1])}deg) rotateZ(${n(g[2])}deg)`,v=m<0?`scale(${1+(1-w.scale)*m*o})`:`scale(${1-(1-w.scale)*m*o})`,E=m<0?1+(1-w.opacity)*m*o:1-(1-w.opacity)*m*o,M=`translate3d(${y}) ${u} ${v}`;if(h&&w.shadow||!h){let e=r.querySelector(".swiper-slide-shadow");if(!e&&w.shadow&&(e=createShadow("creative",r)),e){const t=i.shadowPerProgress?f*(1/i.limitProgress):f;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const $=effectTarget(i,r);$.style.transform=M,$.style.opacity=E,w.origin&&($.style.transformOrigin=w.origin)}},setTransition:e=>{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}export{EffectCreative as default}; +//# sourceMappingURL=effect-creative.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-creative.min.mjs.map b/source/vendor/swiper-bundle/modules/effect-creative.min.mjs.map new file mode 100644 index 0000000..dbbd2ae --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-creative.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-creative.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","getRotateFix","EffectCreative","_ref","swiper","extendParams","on","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","perspective","prev","translate","rotate","opacity","scale","next","getTranslateValue","value","effect","setTranslate","slides","wrapperEl","slidesSizesGrid","params","multiplier","isCenteredSlides","centeredSlides","rotateFix","margin","slidesOffsetBefore","style","transform","i","length","slideEl","slideProgress","progress","Math","min","max","originalProgress","offset","swiperSlideOffset","t","cssMode","r","custom","isHorizontal","data","forEach","index","abs","val","zIndex","round","translateString","join","rotateString","scaleString","opacityString","shadow","shadowEl","querySelector","shadowOpacity","targetEl","origin","transformOrigin","setTransition","duration","transformElements","map","el","transitionDuration","querySelectorAll","allSlides","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-creative.mjs b/source/vendor/swiper-bundle/modules/effect-creative.mjs new file mode 100644 index 0000000..88f5ff7 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-creative.mjs @@ -0,0 +1,146 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs'; + +function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + const rotateFix = getRotateFix(swiper); + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCreative as default }; diff --git a/source/vendor/swiper-bundle/modules/effect-creative.scss b/source/vendor/swiper-bundle/modules/effect-creative.scss new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-creative.scss @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/source/vendor/swiper-bundle/modules/effect-cube-element.css b/source/vendor/swiper-bundle/modules/effect-cube-element.css new file mode 100644 index 0000000..af13615 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cube-element.css @@ -0,0 +1,53 @@ +.swiper-cube { + overflow: visible; +} +.swiper-cube ::slotted(swiper-slide) { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-cube.swiper-rtl ::slotted(swiper-slide) { + transform-origin: 100% 0; +} +.swiper-cube ::slotted(.swiper-slide-active), +.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +.swiper-cube ::slotted(.swiper-slide-active), +.swiper-cube ::slotted(.swiper-slide-next), +.swiper-cube ::slotted(.swiper-slide-prev) { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube ::slotted(.swiper-slide-next) + ::slotted(swiper-slide) { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start *//* Cube slide shadows end */ diff --git a/source/vendor/swiper-bundle/modules/effect-cube-element.min.css b/source/vendor/swiper-bundle/modules/effect-cube-element.min.css new file mode 100644 index 0000000..afc6ca2 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cube-element.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-cube.css b/source/vendor/swiper-bundle/modules/effect-cube.css new file mode 100644 index 0000000..14b5d08 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cube.css @@ -0,0 +1,62 @@ +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start */ +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube slide shadows end */ diff --git a/source/vendor/swiper-bundle/modules/effect-cube.less b/source/vendor/swiper-bundle/modules/effect-cube.less new file mode 100644 index 0000000..54bdc01 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cube.less @@ -0,0 +1,69 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/source/vendor/swiper-bundle/modules/effect-cube.min.css b/source/vendor/swiper-bundle/modules/effect-cube.min.css new file mode 100644 index 0000000..e91764c --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cube.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-cube.min.mjs b/source/vendor/swiper-bundle/modules/effect-cube.min.mjs new file mode 100644 index 0000000..c2f2d80 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cube.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{c as createElement,o as getRotateFix}from"../shared/utils.min.mjs";function EffectCube(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const r=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),r=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),r||(r=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(r)),a&&(a.style.opacity=Math.max(-t,0)),r&&(r.style.opacity=Math.max(t,0))};effectInit({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:o,height:i,rtlTranslate:l,size:d,browser:n}=t,p=getRotateFix(t),c=t.params.cubeEffect,w=t.isHorizontal(),h=t.virtual&&t.params.virtual.enabled;let f,m=0;c.shadow&&(w?(f=t.wrapperEl.querySelector(".swiper-cube-shadow"),f||(f=createElement("div","swiper-cube-shadow"),t.wrapperEl.append(f)),f.style.height=`${o}px`):(f=e.querySelector(".swiper-cube-shadow"),f||(f=createElement("div","swiper-cube-shadow"),e.append(f))));for(let e=0;e-1&&(m=90*s+90*n,l&&(m=90*-s-90*n)),t.style.transform=x,c.slideShadows&&r(t,n,w)}if(s.style.transformOrigin=`50% 50% -${d/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${d/2}px`,c.shadow)if(w)f.style.transform=`translate3d(0px, ${o/2+c.shadowOffset}px, ${-o/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(m)-90*Math.floor(Math.abs(m)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,a=c.shadowScale/t,r=c.shadowOffset;f.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${i/2+r}px, ${-i/2/a}px) rotateX(-89.99deg)`}const u=(n.isSafari||n.isWebView)&&n.needPerspectiveFix?-d/2:0;s.style.transform=`translate3d(0px,0,${u}px) rotateX(${p(t.isHorizontal()?0:m)}deg) rotateY(${p(t.isHorizontal()?-m:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${u}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);r(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})}export{EffectCube as default}; +//# sourceMappingURL=effect-cube.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-cube.min.mjs.map b/source/vendor/swiper-bundle/modules/effect-cube.min.mjs.map new file mode 100644 index 0000000..a2ee782 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cube.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cube.mjs.mjs","names":["effectInit","createElement","getRotateFix","EffectCube","_ref","swiper","extendParams","on","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","createSlideShadows","slideEl","progress","isHorizontal","shadowBefore","querySelector","shadowAfter","split","append","style","opacity","Math","max","effect","setTranslate","el","wrapperEl","slides","width","swiperWidth","height","swiperHeight","rtlTranslate","rtl","size","swiperSize","browser","r","params","isVirtual","virtual","enabled","cubeShadowEl","wrapperRotate","i","length","slideIndex","parseInt","getAttribute","slideAngle","round","floor","min","tx","ty","tz","transform","transformOrigin","shadowAngle","abs","multiplier","sin","PI","cos","scale1","scale2","offset","zFactor","isSafari","isWebView","needPerspectiveFix","setProperty","setTransition","duration","forEach","transitionDuration","querySelectorAll","subEl","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","resistanceRatio","spaceBetween","centeredSlides","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-cube.mjs b/source/vendor/swiper-bundle/modules/effect-cube.mjs new file mode 100644 index 0000000..59fdbe4 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cube.mjs @@ -0,0 +1,174 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { c as createElement, o as getRotateFix } from '../shared/utils.mjs'; + +function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const r = getRotateFix(swiper); + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); +} + +export { EffectCube as default }; diff --git a/source/vendor/swiper-bundle/modules/effect-cube.scss b/source/vendor/swiper-bundle/modules/effect-cube.scss new file mode 100644 index 0000000..54bdc01 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-cube.scss @@ -0,0 +1,69 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/source/vendor/swiper-bundle/modules/effect-fade-element.css b/source/vendor/swiper-bundle/modules/effect-fade-element.css new file mode 100644 index 0000000..76242c6 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-fade-element.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide) { + transition-timing-function: ease-out; +} +.swiper-fade ::slotted(swiper-slide) { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-fade ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} diff --git a/source/vendor/swiper-bundle/modules/effect-fade-element.min.css b/source/vendor/swiper-bundle/modules/effect-fade-element.min.css new file mode 100644 index 0000000..6fb7280 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-fade-element.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-fade.css b/source/vendor/swiper-bundle/modules/effect-fade.css new file mode 100644 index 0000000..ac7449e --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-fade.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active { + pointer-events: auto; +} +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} diff --git a/source/vendor/swiper-bundle/modules/effect-fade.less b/source/vendor/swiper-bundle/modules/effect-fade.less new file mode 100644 index 0000000..0fadca4 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-fade.less @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + pointer-events: auto; + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/source/vendor/swiper-bundle/modules/effect-fade.min.css b/source/vendor/swiper-bundle/modules/effect-fade.min.css new file mode 100644 index 0000000..e535e7e --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-fade.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-fade.min.mjs b/source/vendor/swiper-bundle/modules/effect-fade.min.mjs new file mode 100644 index 0000000..52a481c --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-fade.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectFade(e){let{swiper:t,extendParams:s,on:a}=e;s({fadeEffect:{crossFade:!1}});effectInit({effect:"fade",swiper:t,on:a,setTranslate:()=>{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}export{EffectFade as default}; +//# sourceMappingURL=effect-fade.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-fade.min.mjs.map b/source/vendor/swiper-bundle/modules/effect-fade.min.mjs.map new file mode 100644 index 0000000..91e91f1 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-fade.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-fade.mjs.mjs","names":["effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectFade","_ref","swiper","extendParams","on","fadeEffect","crossFade","effect","setTranslate","slides","params","i","length","slideEl","tx","swiperSlideOffset","virtualTranslate","translate","ty","isHorizontal","slideOpacity","Math","max","abs","progress","min","targetEl","style","opacity","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","allSlides","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","cssMode"],"sources":["0"],"mappings":"YAAcA,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,wBAA2B,0BAEzC,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,WAAY,CACVC,WAAW,KAoCfV,WAAW,CACTW,OAAQ,OACRL,SACAE,KACAI,aArCmB,KACnB,MAAMC,OACJA,GACEP,EACEQ,EAASR,EAAOQ,OAAOL,WAC7B,IAAK,IAAIM,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,GAAK,EAAG,CACzC,MAAME,EAAUX,EAAOO,OAAOE,GAE9B,IAAIG,GADWD,EAAQE,kBAElBb,EAAOQ,OAAOM,mBAAkBF,GAAMZ,EAAOe,WAClD,IAAIC,EAAK,EACJhB,EAAOiB,iBACVD,EAAKJ,EACLA,EAAK,GAEP,MAAMM,EAAelB,EAAOQ,OAAOL,WAAWC,UAAYe,KAAKC,IAAI,EAAID,KAAKE,IAAIV,EAAQW,UAAW,GAAK,EAAIH,KAAKI,IAAIJ,KAAKC,IAAIT,EAAQW,UAAW,GAAI,GAC/IE,EAAW7B,aAAaa,EAAQG,GACtCa,EAASC,MAAMC,QAAUR,EACzBM,EAASC,MAAME,UAAY,eAAef,QAASI,WACrD,GAmBAY,cAjBoBC,IACpB,MAAMC,EAAoB9B,EAAOO,OAAOwB,KAAIpB,GAAWd,oBAAoBc,KAC3EmB,EAAkBE,SAAQC,IACxBA,EAAGR,MAAMS,mBAAqB,GAAGL,KAAY,IAE/CjC,2BAA2B,CACzBI,SACA6B,WACAC,oBACAK,WAAW,GACX,EAQFC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACd1B,kBAAmBd,EAAOQ,OAAOiC,WAGvC,QAES3C"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-fade.mjs b/source/vendor/swiper-bundle/modules/effect-fade.mjs new file mode 100644 index 0000000..140e9b7 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-fade.mjs @@ -0,0 +1,66 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFade as default }; diff --git a/source/vendor/swiper-bundle/modules/effect-fade.scss b/source/vendor/swiper-bundle/modules/effect-fade.scss new file mode 100644 index 0000000..bb059dd --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-fade.scss @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/source/vendor/swiper-bundle/modules/effect-flip-element.css b/source/vendor/swiper-bundle/modules/effect-flip-element.css new file mode 100644 index 0000000..4ae8338 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-flip-element.css @@ -0,0 +1,17 @@ +.swiper-flip { + overflow: visible; +} +.swiper-flip ::slotted(swiper-slide) { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-flip ::slotted(.swiper-slide-active), +.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +/* Flip slide shadows start *//* Flip slide shadows end */ diff --git a/source/vendor/swiper-bundle/modules/effect-flip-element.min.css b/source/vendor/swiper-bundle/modules/effect-flip-element.min.css new file mode 100644 index 0000000..40d852b --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-flip-element.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-flip.css b/source/vendor/swiper-bundle/modules/effect-flip.css new file mode 100644 index 0000000..f4b1d34 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-flip.css @@ -0,0 +1,26 @@ +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +/* Flip slide shadows start */ +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Flip slide shadows end */ diff --git a/source/vendor/swiper-bundle/modules/effect-flip.less b/source/vendor/swiper-bundle/modules/effect-flip.less new file mode 100644 index 0000000..6c16d11 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-flip.less @@ -0,0 +1,28 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/source/vendor/swiper-bundle/modules/effect-flip.min.css b/source/vendor/swiper-bundle/modules/effect-flip.min.css new file mode 100644 index 0000000..b7656ff --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-flip.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-flip.min.mjs b/source/vendor/swiper-bundle/modules/effect-flip.min.mjs new file mode 100644 index 0000000..5db63a2 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-flip.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl,o as getRotateFix}from"../shared/utils.min.mjs";function EffectFlip(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const r=(e,s)=>{let a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),r=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=createShadow("flip",e,t.isHorizontal()?"left":"top")),r||(r=createShadow("flip",e,t.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),r&&(r.style.opacity=Math.max(s,0))};effectInit({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect,i=getRotateFix(t);for(let o=0;o{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),r(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}export{EffectFlip as default}; +//# sourceMappingURL=effect-flip.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-flip.min.mjs.map b/source/vendor/swiper-bundle/modules/effect-flip.min.mjs.map new file mode 100644 index 0000000..475c1df --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-flip.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-flip.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","getRotateFix","EffectFlip","_ref","swiper","extendParams","on","flipEffect","slideShadows","limitRotation","createSlideShadows","slideEl","progress","shadowBefore","isHorizontal","querySelector","shadowAfter","style","opacity","Math","max","effect","setTranslate","slides","rtlTranslate","rtl","params","rotateFix","i","length","min","offset","swiperSlideOffset","rotateY","rotateX","tx","cssMode","translate","ty","zIndex","abs","round","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","virtualTranslate"],"sources":["0"],"mappings":"YAAcA,iBAAoB,8CACpBC,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,yBAA0BC,iBAAoB,0BAE5D,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,WAAY,CACVC,cAAc,EACdC,eAAe,KAGnB,MAAMC,EAAqB,CAACC,EAASC,KACnC,IAAIC,EAAeT,EAAOU,eAAiBH,EAAQI,cAAc,6BAA+BJ,EAAQI,cAAc,4BAClHC,EAAcZ,EAAOU,eAAiBH,EAAQI,cAAc,8BAAgCJ,EAAQI,cAAc,+BACjHF,IACHA,EAAejB,aAAa,OAAQe,EAASP,EAAOU,eAAiB,OAAS,QAE3EE,IACHA,EAAcpB,aAAa,OAAQe,EAASP,EAAOU,eAAiB,QAAU,WAE5ED,IAAcA,EAAaI,MAAMC,QAAUC,KAAKC,KAAKR,EAAU,IAC/DI,IAAaA,EAAYC,MAAMC,QAAUC,KAAKC,IAAIR,EAAU,GAAE,EA+DpEf,WAAW,CACTwB,OAAQ,OACRjB,SACAE,KACAgB,aAtDmB,KACnB,MAAMC,OACJA,EACAC,aAAcC,GACZrB,EACEsB,EAAStB,EAAOsB,OAAOnB,WACvBoB,EAAY1B,aAAaG,GAC/B,IAAK,IAAIwB,EAAI,EAAGA,EAAIL,EAAOM,OAAQD,GAAK,EAAG,CACzC,MAAMjB,EAAUY,EAAOK,GACvB,IAAIhB,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKW,IAAInB,EAAQC,SAAU,IAAK,IAEtD,MAAMmB,EAASpB,EAAQqB,kBAEvB,IAAIC,GADY,IAAMrB,EAElBsB,EAAU,EACVC,EAAK/B,EAAOsB,OAAOU,SAAWL,EAAS3B,EAAOiC,WAAaN,EAC3DO,EAAK,EACJlC,EAAOU,eAKDW,IACTQ,GAAWA,IALXK,EAAKH,EACLA,EAAK,EACLD,GAAWD,EACXA,EAAU,GAIZtB,EAAQM,MAAMsB,QAAUpB,KAAKqB,IAAIrB,KAAKsB,MAAM7B,IAAaW,EAAOM,OAC5DH,EAAOlB,cACTE,EAAmBC,EAASC,GAE9B,MAAM8B,EAAY,eAAeP,QAASG,qBAAsBX,EAAUO,kBAAwBP,EAAUM,SAC3FnC,aAAa4B,EAAQf,GAC7BM,MAAMyB,UAAYA,CAC7B,GAqBAC,cAnBoBC,IACpB,MAAMC,EAAoBzC,EAAOmB,OAAOuB,KAAInC,GAAWX,oBAAoBW,KAC3EkC,EAAkBE,SAAQC,IACxBA,EAAG/B,MAAMgC,mBAAqB,GAAGL,MACjCI,EAAGE,iBAAiB,gHAAgHH,SAAQI,IAC1IA,EAASlC,MAAMgC,mBAAqB,GAAGL,KAAY,GACnD,IAEJ7C,2BAA2B,CACzBK,SACAwC,WACAC,qBACA,EAQFO,gBAnEsB,KAEtBhD,EAAOsB,OAAOnB,WACdH,EAAOmB,OAAOwB,SAAQpC,IACpB,IAAIC,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKW,IAAInB,EAAQC,SAAU,IAAK,IAEtDF,EAAmBC,EAASC,EAAS,GACrC,EA2DFyC,gBAAiB,IAAMjD,EAAOsB,OAAOnB,WACrC+C,YAAa,KAAM,EACnBC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACdC,kBAAmBxD,EAAOsB,OAAOU,WAGvC,QAESlC"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/effect-flip.mjs b/source/vendor/swiper-bundle/modules/effect-flip.mjs new file mode 100644 index 0000000..5175981 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-flip.mjs @@ -0,0 +1,111 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs'; + +function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + const rotateFix = getRotateFix(swiper); + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFlip as default }; diff --git a/source/vendor/swiper-bundle/modules/effect-flip.scss b/source/vendor/swiper-bundle/modules/effect-flip.scss new file mode 100644 index 0000000..6c16d11 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/effect-flip.scss @@ -0,0 +1,28 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/source/vendor/swiper-bundle/modules/free-mode-element.css b/source/vendor/swiper-bundle/modules/free-mode-element.css new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/source/vendor/swiper-bundle/modules/free-mode-element.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/source/vendor/swiper-bundle/modules/free-mode-element.min.css b/source/vendor/swiper-bundle/modules/free-mode-element.min.css new file mode 100644 index 0000000..ecc8120 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/free-mode-element.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/free-mode.css b/source/vendor/swiper-bundle/modules/free-mode.css new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/source/vendor/swiper-bundle/modules/free-mode.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/source/vendor/swiper-bundle/modules/free-mode.less b/source/vendor/swiper-bundle/modules/free-mode.less new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/source/vendor/swiper-bundle/modules/free-mode.less @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/source/vendor/swiper-bundle/modules/free-mode.min.css b/source/vendor/swiper-bundle/modules/free-mode.min.css new file mode 100644 index 0000000..ecc8120 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/free-mode.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/free-mode.min.mjs b/source/vendor/swiper-bundle/modules/free-mode.min.mjs new file mode 100644 index 0000000..251c4ac --- /dev/null +++ b/source/vendor/swiper-bundle/modules/free-mode.min.mjs @@ -0,0 +1,2 @@ +import{d as now,k as elementTransitionEnd}from"../shared/utils.min.mjs";function freeMode(e){let{swiper:t,extendParams:o,emit:n,once:s}=e;o({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:o}=t;0===e.velocities.length&&e.velocities.push({position:o[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:o[t.isHorizontal()?"currentX":"currentY"],time:now()})},onTouchEnd:function(e){let{currentPos:o}=e;if(t.params.cssMode)return;const{params:i,wrapperEl:a,rtlTranslate:r,snapGrid:l,touchEventsData:m}=t,c=now()-m.touchStartTime;if(o<-t.minTranslate())t.slideTo(t.activeIndex);else if(o>-t.maxTranslate())t.slides.length1){const e=m.velocities.pop(),o=m.velocities.pop(),n=e.position-o.position,s=e.time-o.time;t.velocity=n/s,t.velocity/=2,Math.abs(t.velocity)150||now()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=i.freeMode.momentumVelocityRatio,m.velocities.length=0;let e=1e3*i.freeMode.momentumRatio;const o=t.velocity*e;let c=t.translate+o;r&&(c=-c);let d,u=!1;const f=20*Math.abs(t.velocity)*i.freeMode.momentumBounceRatio;let p;if(ct.minTranslate())i.freeMode.momentumBounce?(c-t.minTranslate()>f&&(c=t.minTranslate()+f),d=t.minTranslate(),u=!0,m.allowMomentumBounce=!0):c=t.minTranslate(),i.loop&&i.centeredSlides&&(p=!0);else if(i.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(l[e]-c){t.loopFix()})),0!==t.velocity){if(e=r?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),i.freeMode.sticky){const o=Math.abs((r?-c:c)-t.translate),n=t.slidesSizesGrid[t.activeIndex];e=o{t&&!t.destroyed&&m.allowMomentumBounce&&(n("momentumBounce"),t.setTransition(i.speed),setTimeout((()=>{t.setTranslate(d),elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(n("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(i.freeMode.sticky)return void t.slideToClosest();i.freeMode&&n("_freeModeNoMomentumRelease")}(!i.freeMode.momentum||c>=i.longSwipesMs)&&(n("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})}export{freeMode as default}; +//# sourceMappingURL=free-mode.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/free-mode.min.mjs.map b/source/vendor/swiper-bundle/modules/free-mode.min.mjs.map new file mode 100644 index 0000000..97162ea --- /dev/null +++ b/source/vendor/swiper-bundle/modules/free-mode.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"free-mode.mjs.mjs","names":["now","elementTransitionEnd","freeMode","_ref","swiper","extendParams","emit","once","enabled","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","Object","assign","onTouchStart","params","cssMode","translate","getTranslate","setTranslate","setTransition","touchEventsData","velocities","length","onTouchEnd","currentPos","rtl","onTouchMove","data","touches","push","position","isHorizontal","time","touchStartTime","_ref2","wrapperEl","rtlTranslate","snapGrid","timeDiff","minTranslate","slideTo","activeIndex","maxTranslate","slides","lastMoveEvent","pop","velocityEvent","distance","velocity","Math","abs","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","allowMomentumBounce","loop","centeredSlides","nextSlide","j","swipeDirection","loopFix","moveDistance","currentSlideSize","slidesSizesGrid","speed","slideToClosest","updateProgress","transitionStart","animating","destroyed","setTimeout","transitionEnd","updateActiveIndex","updateSlidesClasses","longSwipesMs"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/free-mode.mjs b/source/vendor/swiper-bundle/modules/free-mode.mjs new file mode 100644 index 0000000..db39c3d --- /dev/null +++ b/source/vendor/swiper-bundle/modules/free-mode.mjs @@ -0,0 +1,237 @@ +import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs'; + +function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); +} + +export { freeMode as default }; diff --git a/source/vendor/swiper-bundle/modules/free-mode.scss b/source/vendor/swiper-bundle/modules/free-mode.scss new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/source/vendor/swiper-bundle/modules/free-mode.scss @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/source/vendor/swiper-bundle/modules/grid-element.css b/source/vendor/swiper-bundle/modules/grid-element.css new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/grid-element.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/source/vendor/swiper-bundle/modules/grid-element.min.css b/source/vendor/swiper-bundle/modules/grid-element.min.css new file mode 100644 index 0000000..7d5f8f9 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/grid-element.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/grid.css b/source/vendor/swiper-bundle/modules/grid.css new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/grid.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/source/vendor/swiper-bundle/modules/grid.less b/source/vendor/swiper-bundle/modules/grid.less new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/grid.less @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/source/vendor/swiper-bundle/modules/grid.min.css b/source/vendor/swiper-bundle/modules/grid.min.css new file mode 100644 index 0000000..7d5f8f9 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/grid.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/grid.min.mjs b/source/vendor/swiper-bundle/modules/grid.min.mjs new file mode 100644 index 0000000..84f1b4e --- /dev/null +++ b/source/vendor/swiper-bundle/modules/grid.min.mjs @@ -0,0 +1,2 @@ +function Grid(e){let i,r,a,t,{swiper:s,extendParams:l,on:o}=e;l({grid:{rows:1,fill:"column"}});const n=()=>{let e=s.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*s.size:"string"==typeof e&&(e=parseFloat(e)),e};o("init",(()=>{t=s.params.grid&&s.params.grid.rows>1})),o("update",(()=>{const{params:e,el:i}=s,r=e.grid&&e.grid.rows>1;t&&!r?(i.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,s.emitContainerClasses()):!t&&r&&(i.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&i.classList.add(`${e.containerModifierClass}grid-column`),s.emitContainerClasses()),t=r})),s.grid={initSlides:e=>{const{slidesPerView:t}=s.params,{rows:l,fill:o}=s.params.grid,n=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:e.length;a=Math.floor(n/l),i=Math.floor(n/l)===n/l?n:Math.ceil(n/l)*l,"auto"!==t&&"row"===o&&(i=Math.max(i,t*l)),r=i/l},unsetSlides:()=>{s.slides&&s.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[s.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,t,l)=>{const{slidesPerGroup:o}=s.params,d=n(),{rows:p,fill:c}=s.params.grid,g=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:l.length;let u,h,m;if("row"===c&&o>1){const r=Math.floor(e/(o*p)),a=e-p*o*r,s=0===r?o:Math.min(Math.ceil((g-r*p*o)/p),o);m=Math.floor(a/s),h=a-m*s+r*o,u=h+m*i/p,t.style.order=u}else"column"===c?(h=Math.floor(e/p),m=e-h*p,(h>a||h===a&&m===p-1)&&(m+=1,m>=p&&(m=0,h+=1))):(m=Math.floor(e/r),h=e-m*r);t.row=m,t.column=h,t.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,t.style[s.getDirectionLabel("margin-top")]=0!==m?d&&`${d}px`:"",t.swiperSlideGridSet=!0},updateWrapperSize:(e,r)=>{const{centeredSlides:a,roundLengths:t}=s.params,l=n(),{rows:o}=s.params.grid;if(s.virtualSize=(e+l)*i,s.virtualSize=Math.ceil(s.virtualSize/o)-l,s.params.cssMode||(s.wrapperEl.style[s.getDirectionLabel("width")]=`${s.virtualSize+l}px`),a){const e=[];for(let i=0;i { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; +} + +export { Grid as default }; diff --git a/source/vendor/swiper-bundle/modules/grid.scss b/source/vendor/swiper-bundle/modules/grid.scss new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/grid.scss @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/source/vendor/swiper-bundle/modules/hash-navigation-element.css b/source/vendor/swiper-bundle/modules/hash-navigation-element.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/hash-navigation-element.min.css b/source/vendor/swiper-bundle/modules/hash-navigation-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/hash-navigation.css b/source/vendor/swiper-bundle/modules/hash-navigation.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/hash-navigation.less b/source/vendor/swiper-bundle/modules/hash-navigation.less new file mode 100644 index 0000000..be8912a --- /dev/null +++ b/source/vendor/swiper-bundle/modules/hash-navigation.less @@ -0,0 +1,2 @@ +@import url('../swiper-vars.less'); + diff --git a/source/vendor/swiper-bundle/modules/hash-navigation.min.css b/source/vendor/swiper-bundle/modules/hash-navigation.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/hash-navigation.min.mjs b/source/vendor/swiper-bundle/modules/hash-navigation.min.mjs new file mode 100644 index 0000000..0c58eff --- /dev/null +++ b/source/vendor/swiper-bundle/modules/hash-navigation.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren}from"../shared/utils.min.mjs";function HashNavigation(a){let{swiper:e,extendParams:t,emit:s,on:i}=a,n=!1;const r=getDocument(),h=getWindow();t({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(a,t){if(e.virtual&&e.params.virtual.enabled){const a=e.slides.filter((a=>a.getAttribute("data-hash")===t))[0];if(!a)return 0;return parseInt(a.getAttribute("data-swiper-slide-index"),10)}return e.getSlideIndex(elementChildren(e.slidesEl,`.${e.params.slideClass}[data-hash="${t}"], swiper-slide[data-hash="${t}"]`)[0])}}});const d=()=>{s("hashChange");const a=r.location.hash.replace("#",""),t=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex];if(a!==(t?t.getAttribute("data-hash"):"")){const t=e.params.hashNavigation.getSlideIndex(e,a);if(void 0===t||Number.isNaN(t))return;e.slideTo(t)}},l=()=>{if(!n||!e.params.hashNavigation.enabled)return;const a=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],t=a?a.getAttribute("data-hash")||a.getAttribute("data-history"):"";e.params.hashNavigation.replaceState&&h.history&&h.history.replaceState?(h.history.replaceState(null,null,`#${t}`||""),s("hashSet")):(r.location.hash=t||"",s("hashSet"))};i("init",(()=>{e.params.hashNavigation.enabled&&(()=>{if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;n=!0;const a=r.location.hash.replace("#","");if(a){const t=0,s=e.params.hashNavigation.getSlideIndex(e,a);e.slideTo(s||0,t,e.params.runCallbacksOnInit,!0)}e.params.hashNavigation.watchState&&h.addEventListener("hashchange",d)})()})),i("destroy",(()=>{e.params.hashNavigation.enabled&&e.params.hashNavigation.watchState&&h.removeEventListener("hashchange",d)})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{n&&l()})),i("slideChange",(()=>{n&&e.params.cssMode&&l()}))}export{HashNavigation as default}; +//# sourceMappingURL=hash-navigation.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/hash-navigation.min.mjs.map b/source/vendor/swiper-bundle/modules/hash-navigation.min.mjs.map new file mode 100644 index 0000000..373df60 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/hash-navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"hash-navigation.mjs.mjs","names":["getDocument","getWindow","elementChildren","HashNavigation","_ref","swiper","extendParams","emit","on","initialized","document","window","hashNavigation","enabled","replaceState","watchState","getSlideIndex","_s","hash","virtual","params","slideWithHash","slides","filter","slideEl","getAttribute","parseInt","slidesEl","slideClass","onHashChange","newHash","location","replace","activeSlideEl","querySelector","activeIndex","newIndex","Number","isNaN","slideTo","setHash","activeSlideHash","history","speed","index","runCallbacksOnInit","addEventListener","init","removeEventListener","cssMode"],"sources":["0"],"mappings":"YAAcA,iBAAkBC,cAAiB,+CACnCC,oBAAuB,0BAErC,SAASC,eAAeC,GACtB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,KACZA,EAAIC,GACJA,GACEJ,EACAK,GAAc,EAClB,MAAMC,EAAWV,cACXW,EAASV,YACfK,EAAa,CACXM,eAAgB,CACdC,SAAS,EACTC,cAAc,EACdC,YAAY,EACZ,aAAAC,CAAcC,EAAIC,GAChB,GAAIb,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAS,CACnD,MAAMQ,EAAgBhB,EAAOiB,OAAOC,QAAOC,GAAWA,EAAQC,aAAa,eAAiBP,IAAM,GAClG,IAAKG,EAAe,OAAO,EAE3B,OADcK,SAASL,EAAcI,aAAa,2BAA4B,GAEhF,CACA,OAAOpB,EAAOW,cAAcd,gBAAgBG,EAAOsB,SAAU,IAAItB,EAAOe,OAAOQ,yBAAyBV,gCAAmCA,OAAU,GACvJ,KAGJ,MAAMW,EAAe,KACnBtB,EAAK,cACL,MAAMuB,EAAUpB,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IAC9CC,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAElL,GAAIL,KADoBG,EAAgBA,EAAcR,aAAa,aAAe,IACjD,CAC/B,MAAMW,EAAW/B,EAAOe,OAAOR,eAAeI,cAAcX,EAAQyB,GACpE,QAAwB,IAAbM,GAA4BC,OAAOC,MAAMF,GAAW,OAC/D/B,EAAOkC,QAAQH,EACjB,GAEII,EAAU,KACd,IAAK/B,IAAgBJ,EAAOe,OAAOR,eAAeC,QAAS,OAC3D,MAAMoB,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAC5KM,EAAkBR,EAAgBA,EAAcR,aAAa,cAAgBQ,EAAcR,aAAa,gBAAkB,GAC5HpB,EAAOe,OAAOR,eAAeE,cAAgBH,EAAO+B,SAAW/B,EAAO+B,QAAQ5B,cAChFH,EAAO+B,QAAQ5B,aAAa,KAAM,KAAM,IAAI2B,KAAqB,IACjElC,EAAK,aAELG,EAASqB,SAASb,KAAOuB,GAAmB,GAC5ClC,EAAK,WACP,EAoBFC,EAAG,QAAQ,KACLH,EAAOe,OAAOR,eAAeC,SAnBtB,MACX,IAAKR,EAAOe,OAAOR,eAAeC,SAAWR,EAAOe,OAAOsB,SAAWrC,EAAOe,OAAOsB,QAAQ7B,QAAS,OACrGJ,GAAc,EACd,MAAMS,EAAOR,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IACjD,GAAId,EAAM,CACR,MAAMyB,EAAQ,EACRC,EAAQvC,EAAOe,OAAOR,eAAeI,cAAcX,EAAQa,GACjEb,EAAOkC,QAAQK,GAAS,EAAGD,EAAOtC,EAAOe,OAAOyB,oBAAoB,EACtE,CACIxC,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOmC,iBAAiB,aAAcjB,EACxC,EASEkB,EACF,IAEFvC,EAAG,WAAW,KACRH,EAAOe,OAAOR,eAAeC,SAV7BR,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOqC,oBAAoB,aAAcnB,EAW3C,IAEFrB,EAAG,4CAA4C,KACzCC,GACF+B,GACF,IAEFhC,EAAG,eAAe,KACZC,GAAeJ,EAAOe,OAAO6B,SAC/BT,GACF,GAEJ,QAESrC"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/hash-navigation.mjs b/source/vendor/swiper-bundle/modules/hash-navigation.mjs new file mode 100644 index 0000000..cf33420 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/hash-navigation.mjs @@ -0,0 +1,93 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren } from '../shared/utils.mjs'; + +function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); +} + +export { HashNavigation as default }; diff --git a/source/vendor/swiper-bundle/modules/hash-navigation.scss b/source/vendor/swiper-bundle/modules/hash-navigation.scss new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/history-element.css b/source/vendor/swiper-bundle/modules/history-element.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/history-element.min.css b/source/vendor/swiper-bundle/modules/history-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/history.css b/source/vendor/swiper-bundle/modules/history.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/history.less b/source/vendor/swiper-bundle/modules/history.less new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/history.min.css b/source/vendor/swiper-bundle/modules/history.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/history.min.mjs b/source/vendor/swiper-bundle/modules/history.min.mjs new file mode 100644 index 0000000..b88cbf9 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/history.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";function History(e){let{swiper:t,extendParams:a,on:s}=e;a({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let r=!1,i={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=getWindow();let a;a=e?new URL(e):t.location;const s=a.pathname.slice(1).split("/").filter((e=>""!==e)),r=s.length;return{key:s[r-2],value:s[r-1]}},n=(e,a)=>{const s=getWindow();if(!r||!t.params.history.enabled)return;let i;i=t.params.url?new URL(t.params.url):s.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${a}"]`):t.slides[a];let n=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let a=t.params.history.root;"/"===a[a.length-1]&&(a=a.slice(0,a.length-1)),n=`${a}/${e?`${e}/`:""}${n}`}else i.pathname.includes(e)||(n=`${e?`${e}/`:""}${n}`);t.params.history.keepQuery&&(n+=i.search);const p=s.history.state;p&&p.value===n||(t.params.history.replaceState?s.history.replaceState({value:n},null,n):s.history.pushState({value:n},null,n))},p=(e,a,s)=>{if(a)for(let r=0,i=t.slides.length;r{i=o(t.params.url),p(t.params.speed,i.value,!1)};s("init",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);r=!0,i=o(t.params.url),i.key||i.value?(p(0,i.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",d)):t.params.history.replaceState||e.addEventListener("popstate",d)}})()})),s("destroy",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();t.params.history.replaceState||e.removeEventListener("popstate",d)})()})),s("transitionEnd _freeModeNoMomentumRelease",(()=>{r&&n(t.params.history.key,t.activeIndex)})),s("slideChange",(()=>{r&&t.params.cssMode&&n(t.params.history.key,t.activeIndex)}))}export{History as default}; +//# sourceMappingURL=history.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/history.min.mjs.map b/source/vendor/swiper-bundle/modules/history.min.mjs.map new file mode 100644 index 0000000..821c584 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/history.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"history.mjs.mjs","names":["getWindow","History","_ref","swiper","extendParams","on","history","enabled","root","replaceState","key","keepQuery","initialized","paths","slugify","text","toString","replace","getPathValues","urlOverride","window","location","URL","pathArray","pathname","slice","split","filter","part","total","length","value","setHistory","index","params","url","slide","virtual","slidesEl","querySelector","slides","getAttribute","includes","search","currentState","state","pushState","scrollToSlide","speed","runCallbacks","i","getSlideIndex","slideTo","setHistoryPopState","hashNavigation","runCallbacksOnInit","addEventListener","init","removeEventListener","destroy","activeIndex","cssMode"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/history.mjs b/source/vendor/swiper-bundle/modules/history.mjs new file mode 100644 index 0000000..466c8b8 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/history.mjs @@ -0,0 +1,142 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; + +function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); +} + +export { History as default }; diff --git a/source/vendor/swiper-bundle/modules/history.scss b/source/vendor/swiper-bundle/modules/history.scss new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/index.min.mjs b/source/vendor/swiper-bundle/modules/index.min.mjs new file mode 100644 index 0000000..41b89c3 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/index.min.mjs @@ -0,0 +1,2 @@ +export{default as Virtual}from"./virtual.min.mjs";export{default as Keyboard}from"./keyboard.min.mjs";export{default as Mousewheel}from"./mousewheel.min.mjs";export{default as Navigation}from"./navigation.min.mjs";export{default as Pagination}from"./pagination.min.mjs";export{default as Scrollbar}from"./scrollbar.min.mjs";export{default as Parallax}from"./parallax.min.mjs";export{default as Zoom}from"./zoom.min.mjs";export{default as Controller}from"./controller.min.mjs";export{default as A11y}from"./a11y.min.mjs";export{default as History}from"./history.min.mjs";export{default as HashNavigation}from"./hash-navigation.min.mjs";export{default as Autoplay}from"./autoplay.min.mjs";export{default as Thumbs}from"./thumbs.min.mjs";export{default as FreeMode}from"./free-mode.min.mjs";export{default as Grid}from"./grid.min.mjs";export{default as Manipulation}from"./manipulation.min.mjs";export{default as EffectFade}from"./effect-fade.min.mjs";export{default as EffectCube}from"./effect-cube.min.mjs";export{default as EffectFlip}from"./effect-flip.min.mjs";export{default as EffectCoverflow}from"./effect-coverflow.min.mjs";export{default as EffectCreative}from"./effect-creative.min.mjs";export{default as EffectCards}from"./effect-cards.min.mjs"; +//# sourceMappingURL=index.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/index.min.mjs.map b/source/vendor/swiper-bundle/modules/index.min.mjs.map new file mode 100644 index 0000000..1492964 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/index.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs.mjs","names":[],"sources":["0"],"mappings":"OAAQ,uBAAyB,2BACzB,wBAA0B,4BAC1B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,yBAA2B,6BAC3B,wBAA0B,4BAC1B,oBAAsB,wBACtB,0BAA4B,8BAC5B,oBAAsB,wBACtB,uBAAyB,2BACzB,8BAAgC,mCAChC,wBAA0B,4BAC1B,sBAAwB,0BACxB,wBAA0B,6BAC1B,oBAAsB,wBACtB,4BAA8B,gCAC9B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,+BAAiC,oCACjC,8BAAgC,mCAChC,2BAA6B"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/index.mjs b/source/vendor/swiper-bundle/modules/index.mjs new file mode 100644 index 0000000..3186045 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/index.mjs @@ -0,0 +1,23 @@ +export {default as Virtual} from './virtual.mjs'; +export {default as Keyboard} from './keyboard.mjs'; +export {default as Mousewheel} from './mousewheel.mjs'; +export {default as Navigation} from './navigation.mjs'; +export {default as Pagination} from './pagination.mjs'; +export {default as Scrollbar} from './scrollbar.mjs'; +export {default as Parallax} from './parallax.mjs'; +export {default as Zoom} from './zoom.mjs'; +export {default as Controller} from './controller.mjs'; +export {default as A11y} from './a11y.mjs'; +export {default as History} from './history.mjs'; +export {default as HashNavigation} from './hash-navigation.mjs'; +export {default as Autoplay} from './autoplay.mjs'; +export {default as Thumbs} from './thumbs.mjs'; +export {default as FreeMode} from './free-mode.mjs'; +export {default as Grid} from './grid.mjs'; +export {default as Manipulation} from './manipulation.mjs'; +export {default as EffectFade} from './effect-fade.mjs'; +export {default as EffectCube} from './effect-cube.mjs'; +export {default as EffectFlip} from './effect-flip.mjs'; +export {default as EffectCoverflow} from './effect-coverflow.mjs'; +export {default as EffectCreative} from './effect-creative.mjs'; +export {default as EffectCards} from './effect-cards.mjs'; \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/keyboard-element.css b/source/vendor/swiper-bundle/modules/keyboard-element.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/keyboard-element.min.css b/source/vendor/swiper-bundle/modules/keyboard-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/keyboard.css b/source/vendor/swiper-bundle/modules/keyboard.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/keyboard.less b/source/vendor/swiper-bundle/modules/keyboard.less new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/keyboard.min.css b/source/vendor/swiper-bundle/modules/keyboard.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/keyboard.min.mjs b/source/vendor/swiper-bundle/modules/keyboard.min.mjs new file mode 100644 index 0000000..f1d9d2d --- /dev/null +++ b/source/vendor/swiper-bundle/modules/keyboard.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{a as elementParents,b as elementOffset}from"../shared/utils.min.mjs";function Keyboard(e){let{swiper:t,extendParams:n,on:a,emit:r}=e;const l=getDocument(),i=getWindow();function o(e){if(!t.enabled)return;const{rtlTranslate:n}=t;let a=e;a.originalEvent&&(a=a.originalEvent);const o=a.keyCode||a.charCode,s=t.params.keyboard.pageUpDown,d=s&&33===o,f=s&&34===o,m=37===o,b=39===o,c=38===o,p=40===o;if(!t.allowSlideNext&&(t.isHorizontal()&&b||t.isVertical()&&p||f))return!1;if(!t.allowSlidePrev&&(t.isHorizontal()&&m||t.isVertical()&&c||d))return!1;if(!(a.shiftKey||a.altKey||a.ctrlKey||a.metaKey||l.activeElement&&l.activeElement.nodeName&&("input"===l.activeElement.nodeName.toLowerCase()||"textarea"===l.activeElement.nodeName.toLowerCase()))){if(t.params.keyboard.onlyInViewport&&(d||f||m||b||c||p)){let e=!1;if(elementParents(t.el,`.${t.params.slideClass}, swiper-slide`).length>0&&0===elementParents(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,r=a.clientWidth,l=a.clientHeight,o=i.innerWidth,s=i.innerHeight,d=elementOffset(a);n&&(d.left-=a.scrollLeft);const f=[[d.left,d.top],[d.left+r,d.top],[d.left,d.top+l],[d.left+r,d.top+l]];for(let t=0;t=0&&n[0]<=o&&n[1]>=0&&n[1]<=s){if(0===n[0]&&0===n[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||f||m||b)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((f||b)&&!n||(d||m)&&n)&&t.slideNext(),((d||m)&&!n||(f||b)&&n)&&t.slidePrev()):((d||f||c||p)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(f||p)&&t.slideNext(),(d||c)&&t.slidePrev()),r("keyPress",o)}}function s(){t.keyboard.enabled||(l.addEventListener("keydown",o),t.keyboard.enabled=!0)}function d(){t.keyboard.enabled&&(l.removeEventListener("keydown",o),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},n({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&s()})),a("destroy",(()=>{t.keyboard.enabled&&d()})),Object.assign(t.keyboard,{enable:s,disable:d})}export{Keyboard as default}; +//# sourceMappingURL=keyboard.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/keyboard.min.mjs.map b/source/vendor/swiper-bundle/modules/keyboard.min.mjs.map new file mode 100644 index 0000000..04ab4eb --- /dev/null +++ b/source/vendor/swiper-bundle/modules/keyboard.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"keyboard.mjs.mjs","names":["getDocument","getWindow","elementParents","elementOffset","Keyboard","_ref","swiper","extendParams","on","emit","document","window","handle","event","enabled","rtlTranslate","rtl","e","originalEvent","kc","keyCode","charCode","pageUpDown","params","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","allowSlideNext","isHorizontal","isVertical","allowSlidePrev","shiftKey","altKey","ctrlKey","metaKey","activeElement","nodeName","toLowerCase","onlyInViewport","inView","el","slideClass","length","slideActiveClass","swiperWidth","clientWidth","swiperHeight","clientHeight","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","left","scrollLeft","swiperCoord","top","i","point","preventDefault","returnValue","slideNext","slidePrev","enable","addEventListener","disable","removeEventListener","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/keyboard.mjs b/source/vendor/swiper-bundle/modules/keyboard.mjs new file mode 100644 index 0000000..ba62a46 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/keyboard.mjs @@ -0,0 +1,117 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { a as elementParents, b as elementOffset } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); +} + +export { Keyboard as default }; diff --git a/source/vendor/swiper-bundle/modules/keyboard.scss b/source/vendor/swiper-bundle/modules/keyboard.scss new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/manipulation-element.css b/source/vendor/swiper-bundle/modules/manipulation-element.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/manipulation-element.min.css b/source/vendor/swiper-bundle/modules/manipulation-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/manipulation.css b/source/vendor/swiper-bundle/modules/manipulation.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/manipulation.less b/source/vendor/swiper-bundle/modules/manipulation.less new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/manipulation.min.css b/source/vendor/swiper-bundle/modules/manipulation.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/manipulation.min.mjs b/source/vendor/swiper-bundle/modules/manipulation.min.mjs new file mode 100644 index 0000000..1b7832f --- /dev/null +++ b/source/vendor/swiper-bundle/modules/manipulation.min.mjs @@ -0,0 +1,2 @@ +function appendSlide(e){const l=this,{params:o,slidesEl:i}=l;o.loop&&l.loopDestroy();const t=e=>{if("string"==typeof e){const l=document.createElement("div");l.innerHTML=e,i.append(l.children[0]),l.innerHTML=""}else i.append(e)};if("object"==typeof e&&"length"in e)for(let l=0;l{if("string"==typeof e){const l=document.createElement("div");l.innerHTML=e,t.prepend(l.children[0]),l.innerHTML=""}else t.prepend(e)};if("object"==typeof e&&"length"in e){for(let l=0;l=s)return void o.appendSlide(l);let p=d>e?d+1:d;const r=[];for(let l=s-1;l>=e;l-=1){const e=o.slides[l];e.remove(),r.unshift(e)}if("object"==typeof l&&"length"in l){for(let e=0;ee?d+l.length:d}else n.append(l);for(let e=0;e { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } +} + +function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); +} + +function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); +} + +function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); +} + +export { Manipulation as default }; diff --git a/source/vendor/swiper-bundle/modules/manipulation.scss b/source/vendor/swiper-bundle/modules/manipulation.scss new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/mousewheel-element.css b/source/vendor/swiper-bundle/modules/mousewheel-element.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/mousewheel-element.min.css b/source/vendor/swiper-bundle/modules/mousewheel-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/mousewheel.css b/source/vendor/swiper-bundle/modules/mousewheel.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/mousewheel.less b/source/vendor/swiper-bundle/modules/mousewheel.less new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/mousewheel.min.css b/source/vendor/swiper-bundle/modules/mousewheel.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/mousewheel.min.mjs b/source/vendor/swiper-bundle/modules/mousewheel.min.mjs new file mode 100644 index 0000000..312e9b6 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/mousewheel.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{n as nextTick,d as now}from"../shared/utils.min.mjs";function Mousewheel(e){let{swiper:t,extendParams:a,on:s,emit:n}=e;const l=getWindow();let i;a({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let r,o=now();const d=[];function m(){t.enabled&&(t.mouseEntered=!0)}function p(){t.enabled&&(t.mouseEntered=!1)}function u(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&now()-o<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),n("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),n("scroll",e.raw)),o=(new l.Date).getTime(),!1)))}function h(e){let a=e,s=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const l=t.params.mousewheel;t.params.cssMode&&a.preventDefault();let o=t.el;"container"!==t.params.mousewheel.eventsTarget&&(o=document.querySelector(t.params.mousewheel.eventsTarget));const m=o&&o.contains(a.target);if(!t.mouseEntered&&!m&&!l.releaseOnEdges)return!0;a.originalEvent&&(a=a.originalEvent);let p=0;const h=t.rtlTranslate?-1:1,c=function(e){let t=0,a=0,s=0,n=0;return"detail"in e&&(a=e.detail),"wheelDelta"in e&&(a=-e.wheelDelta/120),"wheelDeltaY"in e&&(a=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=a,a=0),s=10*t,n=10*a,"deltaY"in e&&(n=e.deltaY),"deltaX"in e&&(s=e.deltaX),e.shiftKey&&!s&&(s=n,n=0),(s||n)&&e.deltaMode&&(1===e.deltaMode?(s*=40,n*=40):(s*=800,n*=800)),s&&!t&&(t=s<1?-1:1),n&&!a&&(a=n<1?-1:1),{spinX:t,spinY:a,pixelX:s,pixelY:n}}(a);if(l.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(c.pixelX)>Math.abs(c.pixelY)))return!0;p=-c.pixelX*h}else{if(!(Math.abs(c.pixelY)>Math.abs(c.pixelX)))return!0;p=-c.pixelY}else p=Math.abs(c.pixelX)>Math.abs(c.pixelY)?-c.pixelX*h:-c.pixelY;if(0===p)return!0;l.invert&&(p=-p);let w=t.getTranslate()+p*l.sensitivity;if(w>=t.minTranslate()&&(w=t.minTranslate()),w<=t.maxTranslate()&&(w=t.maxTranslate()),s=!!t.params.loop||!(w===t.minTranslate()||w===t.maxTranslate()),s&&t.params.nested&&a.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:now(),delta:Math.abs(p),direction:Math.sign(p)},s=r&&e.time=t.minTranslate()&&(o=t.minTranslate()),o<=t.maxTranslate()&&(o=t.maxTranslate()),t.setTransition(0),t.setTranslate(o),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!m&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(i),i=void 0,d.length>=15&&d.shift();const a=d.length?d[d.length-1]:void 0,s=d[0];if(d.push(e),a&&(e.delta>a.delta||e.direction!==a.direction))d.splice(0);else if(d.length>=15&&e.time-s.time<500&&s.delta-e.delta>=1&&e.delta<=6){const a=p>0?.8:.2;r=e,d.splice(0),i=nextTick((()=>{t.slideToClosest(t.params.speed,!0,void 0,a)}),0)}i||(i=nextTick((()=>{r=e,d.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(s||n("scroll",a),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),l.releaseOnEdges&&(o===t.minTranslate()||o===t.maxTranslate()))return!0}}else{const a={time:now(),delta:Math.abs(p),direction:Math.sign(p),raw:e};d.length>=2&&d.shift();const s=d.length?d[d.length-1]:void 0;if(d.push(a),s?(a.direction!==s.direction||a.delta>s.delta||a.time>s.time+150)&&u(a):u(a),function(e){const a=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&a.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&a.releaseOnEdges)return!0;return!1}(a))return!0}return a.preventDefault?a.preventDefault():a.returnValue=!1,!1}function c(e){let a=t.el;"container"!==t.params.mousewheel.eventsTarget&&(a=document.querySelector(t.params.mousewheel.eventsTarget)),a[e]("mouseenter",m),a[e]("mouseleave",p),a[e]("wheel",h)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",h),!0):!t.mousewheel.enabled&&(c("addEventListener"),t.mousewheel.enabled=!0,!0)}function f(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,h),!0):!!t.mousewheel.enabled&&(c("removeEventListener"),t.mousewheel.enabled=!1,!0)}s("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&f(),t.params.mousewheel.enabled&&w()})),s("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&f()})),Object.assign(t.mousewheel,{enable:w,disable:f})}export{Mousewheel as default}; +//# sourceMappingURL=mousewheel.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/mousewheel.min.mjs.map b/source/vendor/swiper-bundle/modules/mousewheel.min.mjs.map new file mode 100644 index 0000000..678fdba --- /dev/null +++ b/source/vendor/swiper-bundle/modules/mousewheel.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"mousewheel.mjs.mjs","names":["getWindow","nextTick","now","Mousewheel","_ref","swiper","extendParams","on","emit","window","timeout","mousewheel","enabled","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","params","delta","direction","isEnd","loop","animating","slideNext","raw","isBeginning","slidePrev","Date","getTime","handle","event","e","disableParentSwiper","target","closest","cssMode","preventDefault","targetEl","el","document","querySelector","targetElContainsTarget","contains","originalEvent","rtlFactor","rtlTranslate","data","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","shiftKey","deltaMode","spinX","spinY","pixelX","pixelY","normalize","isHorizontal","Math","abs","positions","getTranslate","minTranslate","maxTranslate","nested","stopPropagation","freeMode","time","sign","ignoreWheelEvents","undefined","position","wasBeginning","wasEnd","setTransition","setTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","loopFix","byMousewheel","sticky","clearTimeout","length","shift","prevEvent","firstEvent","push","splice","snapToThreshold","slideToClosest","speed","autoplay","autoplayDisableOnInteraction","stop","releaseScroll","returnValue","events","method","enable","wrapperEl","removeEventListener","disable","addEventListener","Object","assign"],"sources":["0"],"mappings":"YAAcA,cAAiB,+CACjBC,cAAeC,QAAW,0BAGxC,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,EAAEC,KACFA,GACEJ,EACJ,MAAMK,EAAST,YAiBf,IAAIU,EAhBJJ,EAAa,CACXK,WAAY,CACVC,SAAS,EACTC,gBAAgB,EAChBC,QAAQ,EACRC,aAAa,EACbC,YAAa,EACbC,aAAc,YACdC,eAAgB,KAChBC,cAAe,KACfC,kBAAmB,0BAGvBf,EAAOM,WAAa,CAClBC,SAAS,GAGX,IACIS,EADAC,EAAiBpB,MAErB,MAAMqB,EAAoB,GAqE1B,SAASC,IACFnB,EAAOO,UACZP,EAAOoB,cAAe,EACxB,CACA,SAASC,IACFrB,EAAOO,UACZP,EAAOoB,cAAe,EACxB,CACA,SAASE,EAAcC,GACrB,QAAIvB,EAAOwB,OAAOlB,WAAWO,gBAAkBU,EAASE,MAAQzB,EAAOwB,OAAOlB,WAAWO,oBAIrFb,EAAOwB,OAAOlB,WAAWQ,eAAiBjB,MAAQoB,EAAiBjB,EAAOwB,OAAOlB,WAAWQ,iBAQ5FS,EAASE,OAAS,GAAK5B,MAAQoB,EAAiB,KAgBhDM,EAASG,UAAY,EACjB1B,EAAO2B,QAAS3B,EAAOwB,OAAOI,MAAU5B,EAAO6B,YACnD7B,EAAO8B,YACP3B,EAAK,SAAUoB,EAASQ,MAEf/B,EAAOgC,cAAehC,EAAOwB,OAAOI,MAAU5B,EAAO6B,YAChE7B,EAAOiC,YACP9B,EAAK,SAAUoB,EAASQ,MAG1Bd,GAAiB,IAAIb,EAAO8B,MAAOC,WAE5B,IACT,CAcA,SAASC,EAAOC,GACd,IAAIC,EAAID,EACJE,GAAsB,EAC1B,IAAKvC,EAAOO,QAAS,OAGrB,GAAI8B,EAAMG,OAAOC,QAAQ,IAAIzC,EAAOwB,OAAOlB,WAAWS,qBAAsB,OAC5E,MAAMS,EAASxB,EAAOwB,OAAOlB,WACzBN,EAAOwB,OAAOkB,SAChBJ,EAAEK,iBAEJ,IAAIC,EAAW5C,EAAO6C,GACwB,cAA1C7C,EAAOwB,OAAOlB,WAAWM,eAC3BgC,EAAWE,SAASC,cAAc/C,EAAOwB,OAAOlB,WAAWM,eAE7D,MAAMoC,EAAyBJ,GAAYA,EAASK,SAASX,EAAEE,QAC/D,IAAKxC,EAAOoB,eAAiB4B,IAA2BxB,EAAOhB,eAAgB,OAAO,EAClF8B,EAAEY,gBAAeZ,EAAIA,EAAEY,eAC3B,IAAIzB,EAAQ,EACZ,MAAM0B,EAAYnD,EAAOoD,cAAgB,EAAI,EACvCC,EAxJR,SAAmBf,GAKjB,IAAIgB,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAqDT,MAlDI,WAAYnB,IACdiB,EAAKjB,EAAEoB,QAEL,eAAgBpB,IAClBiB,GAAMjB,EAAEqB,WAAa,KAEnB,gBAAiBrB,IACnBiB,GAAMjB,EAAEsB,YAAc,KAEpB,gBAAiBtB,IACnBgB,GAAMhB,EAAEuB,YAAc,KAIpB,SAAUvB,GAAKA,EAAEwB,OAASxB,EAAEyB,kBAC9BT,EAAKC,EACLA,EAAK,GAEPC,EA3BmB,GA2BdF,EACLG,EA5BmB,GA4BdF,EACD,WAAYjB,IACdmB,EAAKnB,EAAE0B,QAEL,WAAY1B,IACdkB,EAAKlB,EAAE2B,QAEL3B,EAAE4B,WAAaV,IAEjBA,EAAKC,EACLA,EAAK,IAEFD,GAAMC,IAAOnB,EAAE6B,YACE,IAAhB7B,EAAE6B,WAEJX,GA1CgB,GA2ChBC,GA3CgB,KA8ChBD,GA7CgB,IA8ChBC,GA9CgB,MAmDhBD,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEjBC,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEd,CACLW,MAAOd,EACPe,MAAOd,EACPe,OAAQd,EACRe,OAAQd,EAEZ,CAqFee,CAAUlC,GACvB,GAAId,EAAOd,YACT,GAAIV,EAAOyE,eAAgB,CACzB,KAAIC,KAAKC,IAAItB,EAAKiB,QAAUI,KAAKC,IAAItB,EAAKkB,SAA+C,OAAO,EAA7C9C,GAAS4B,EAAKiB,OAASnB,CAC5E,KAAO,MAAIuB,KAAKC,IAAItB,EAAKkB,QAAUG,KAAKC,IAAItB,EAAKiB,SAAmC,OAAO,EAAjC7C,GAAS4B,EAAKkB,MAAuB,MAE/F9C,EAAQiD,KAAKC,IAAItB,EAAKiB,QAAUI,KAAKC,IAAItB,EAAKkB,SAAWlB,EAAKiB,OAASnB,GAAaE,EAAKkB,OAE3F,GAAc,IAAV9C,EAAa,OAAO,EACpBD,EAAOf,SAAQgB,GAASA,GAG5B,IAAImD,EAAY5E,EAAO6E,eAAiBpD,EAAQD,EAAOb,YAavD,GAZIiE,GAAa5E,EAAO8E,iBAAgBF,EAAY5E,EAAO8E,gBACvDF,GAAa5E,EAAO+E,iBAAgBH,EAAY5E,EAAO+E,gBAS3DxC,IAAsBvC,EAAOwB,OAAOI,QAAgBgD,IAAc5E,EAAO8E,gBAAkBF,IAAc5E,EAAO+E,gBAC5GxC,GAAuBvC,EAAOwB,OAAOwD,QAAQ1C,EAAE2C,kBAC9CjF,EAAOwB,OAAO0D,UAAalF,EAAOwB,OAAO0D,SAAS3E,QAoChD,CAOL,MAAMgB,EAAW,CACf4D,KAAMtF,MACN4B,MAAOiD,KAAKC,IAAIlD,GAChBC,UAAWgD,KAAKU,KAAK3D,IAEjB4D,EAAoBrE,GAAuBO,EAAS4D,KAAOnE,EAAoBmE,KAAO,KAAO5D,EAASE,OAAST,EAAoBS,OAASF,EAASG,YAAcV,EAAoBU,UAC7L,IAAK2D,EAAmB,CACtBrE,OAAsBsE,EACtB,IAAIC,EAAWvF,EAAO6E,eAAiBpD,EAAQD,EAAOb,YACtD,MAAM6E,EAAexF,EAAOgC,YACtByD,EAASzF,EAAO2B,MAiBtB,GAhBI4D,GAAYvF,EAAO8E,iBAAgBS,EAAWvF,EAAO8E,gBACrDS,GAAYvF,EAAO+E,iBAAgBQ,EAAWvF,EAAO+E,gBACzD/E,EAAO0F,cAAc,GACrB1F,EAAO2F,aAAaJ,GACpBvF,EAAO4F,iBACP5F,EAAO6F,oBACP7F,EAAO8F,wBACFN,GAAgBxF,EAAOgC,cAAgByD,GAAUzF,EAAO2B,QAC3D3B,EAAO8F,sBAEL9F,EAAOwB,OAAOI,MAChB5B,EAAO+F,QAAQ,CACbrE,UAAWH,EAASG,UAAY,EAAI,OAAS,OAC7CsE,cAAc,IAGdhG,EAAOwB,OAAO0D,SAASe,OAAQ,CAYjCC,aAAa7F,GACbA,OAAUiF,EACNpE,EAAkBiF,QAAU,IAC9BjF,EAAkBkF,QAGpB,MAAMC,EAAYnF,EAAkBiF,OAASjF,EAAkBA,EAAkBiF,OAAS,QAAKb,EACzFgB,EAAapF,EAAkB,GAErC,GADAA,EAAkBqF,KAAKhF,GACnB8E,IAAc9E,EAASE,MAAQ4E,EAAU5E,OAASF,EAASG,YAAc2E,EAAU3E,WAErFR,EAAkBsF,OAAO,QACpB,GAAItF,EAAkBiF,QAAU,IAAM5E,EAAS4D,KAAOmB,EAAWnB,KAAO,KAAOmB,EAAW7E,MAAQF,EAASE,OAAS,GAAKF,EAASE,OAAS,EAAG,CAOnJ,MAAMgF,EAAkBhF,EAAQ,EAAI,GAAM,GAC1CT,EAAsBO,EACtBL,EAAkBsF,OAAO,GACzBnG,EAAUT,UAAS,KACjBI,EAAO0G,eAAe1G,EAAOwB,OAAOmF,OAAO,OAAMrB,EAAWmB,EAAgB,GAC3E,EACL,CAEKpG,IAIHA,EAAUT,UAAS,KAEjBoB,EAAsBO,EACtBL,EAAkBsF,OAAO,GACzBxG,EAAO0G,eAAe1G,EAAOwB,OAAOmF,OAAO,OAAMrB,EAHzB,GAGoD,GAC3E,KAEP,CAQA,GALKD,GAAmBlF,EAAK,SAAUmC,GAGnCtC,EAAOwB,OAAOoF,UAAY5G,EAAOwB,OAAOqF,8BAA8B7G,EAAO4G,SAASE,OAEtFtF,EAAOhB,iBAAmB+E,IAAavF,EAAO8E,gBAAkBS,IAAavF,EAAO+E,gBACtF,OAAO,CAEX,CACF,KApIgE,CAE9D,MAAMxD,EAAW,CACf4D,KAAMtF,MACN4B,MAAOiD,KAAKC,IAAIlD,GAChBC,UAAWgD,KAAKU,KAAK3D,GACrBM,IAAKM,GAIHnB,EAAkBiF,QAAU,GAC9BjF,EAAkBkF,QAGpB,MAAMC,EAAYnF,EAAkBiF,OAASjF,EAAkBA,EAAkBiF,OAAS,QAAKb,EAmB/F,GAlBApE,EAAkBqF,KAAKhF,GAQnB8E,GACE9E,EAASG,YAAc2E,EAAU3E,WAAaH,EAASE,MAAQ4E,EAAU5E,OAASF,EAAS4D,KAAOkB,EAAUlB,KAAO,MACrH7D,EAAcC,GAGhBD,EAAcC,GAtFpB,SAAuBA,GACrB,MAAMC,EAASxB,EAAOwB,OAAOlB,WAC7B,GAAIiB,EAASG,UAAY,GACvB,GAAI1B,EAAO2B,QAAU3B,EAAOwB,OAAOI,MAAQJ,EAAOhB,eAEhD,OAAO,OAEJ,GAAIR,EAAOgC,cAAgBhC,EAAOwB,OAAOI,MAAQJ,EAAOhB,eAE7D,OAAO,EAET,OAAO,CACT,CA+EQuG,CAAcxF,GAChB,OAAO,CAEX,CAkGA,OADIe,EAAEK,eAAgBL,EAAEK,iBAAsBL,EAAE0E,aAAc,GACvD,CACT,CACA,SAASC,EAAOC,GACd,IAAItE,EAAW5C,EAAO6C,GACwB,cAA1C7C,EAAOwB,OAAOlB,WAAWM,eAC3BgC,EAAWE,SAASC,cAAc/C,EAAOwB,OAAOlB,WAAWM,eAE7DgC,EAASsE,GAAQ,aAAc/F,GAC/ByB,EAASsE,GAAQ,aAAc7F,GAC/BuB,EAASsE,GAAQ,QAAS9E,EAC5B,CACA,SAAS+E,IACP,OAAInH,EAAOwB,OAAOkB,SAChB1C,EAAOoH,UAAUC,oBAAoB,QAASjF,IACvC,IAELpC,EAAOM,WAAWC,UACtB0G,EAAO,oBACPjH,EAAOM,WAAWC,SAAU,GACrB,EACT,CACA,SAAS+G,IACP,OAAItH,EAAOwB,OAAOkB,SAChB1C,EAAOoH,UAAUG,iBAAiBlF,MAAOD,IAClC,KAEJpC,EAAOM,WAAWC,UACvB0G,EAAO,uBACPjH,EAAOM,WAAWC,SAAU,GACrB,EACT,CACAL,EAAG,QAAQ,MACJF,EAAOwB,OAAOlB,WAAWC,SAAWP,EAAOwB,OAAOkB,SACrD4E,IAEEtH,EAAOwB,OAAOlB,WAAWC,SAAS4G,GAAQ,IAEhDjH,EAAG,WAAW,KACRF,EAAOwB,OAAOkB,SAChByE,IAEEnH,EAAOM,WAAWC,SAAS+G,GAAS,IAE1CE,OAAOC,OAAOzH,EAAOM,WAAY,CAC/B6G,SACAG,WAEJ,QAESxH"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/mousewheel.mjs b/source/vendor/swiper-bundle/modules/mousewheel.mjs new file mode 100644 index 0000000..28c4d2e --- /dev/null +++ b/source/vendor/swiper-bundle/modules/mousewheel.mjs @@ -0,0 +1,393 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { n as nextTick, d as now } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); +} + +export { Mousewheel as default }; diff --git a/source/vendor/swiper-bundle/modules/mousewheel.scss b/source/vendor/swiper-bundle/modules/mousewheel.scss new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/navigation-element.css b/source/vendor/swiper-bundle/modules/navigation-element.css new file mode 100644 index 0000000..46a2918 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/navigation-element.css @@ -0,0 +1,63 @@ +:host { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start *//* Navigation font end */ diff --git a/source/vendor/swiper-bundle/modules/navigation-element.min.css b/source/vendor/swiper-bundle/modules/navigation-element.min.css new file mode 100644 index 0000000..70d1870 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/navigation-element.min.css @@ -0,0 +1 @@ +:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/navigation.css b/source/vendor/swiper-bundle/modules/navigation.css new file mode 100644 index 0000000..a287b8a --- /dev/null +++ b/source/vendor/swiper-bundle/modules/navigation.css @@ -0,0 +1,86 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +/* Navigation font end */ diff --git a/source/vendor/swiper-bundle/modules/navigation.less b/source/vendor/swiper-bundle/modules/navigation.less new file mode 100644 index 0000000..5243fe6 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/navigation.less @@ -0,0 +1,86 @@ +@import url('../swiper-vars.less'); + +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + } + .swiper-rtl & svg { + transform: rotate(180deg); + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev, +.swiper-button-next { + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +/* Navigation font end */ diff --git a/source/vendor/swiper-bundle/modules/navigation.min.css b/source/vendor/swiper-bundle/modules/navigation.min.css new file mode 100644 index 0000000..d93c5d8 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/navigation.min.css @@ -0,0 +1 @@ +:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/navigation.min.mjs b/source/vendor/swiper-bundle/modules/navigation.min.mjs new file mode 100644 index 0000000..c8880dd --- /dev/null +++ b/source/vendor/swiper-bundle/modules/navigation.min.mjs @@ -0,0 +1,2 @@ +import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{m as makeElementsArray}from"../shared/utils.min.mjs";function Navigation(a){let{swiper:e,extendParams:n,on:i,emit:t}=a;function s(a){let n;return a&&"string"==typeof a&&e.isElement&&(n=e.el.querySelector(a),n)?n:(a&&("string"==typeof a&&(n=[...document.querySelectorAll(a)]),e.params.uniqueNavElements&&"string"==typeof a&&n&&n.length>1&&1===e.el.querySelectorAll(a).length?n=e.el.querySelector(a):n&&1===n.length&&(n=n[0])),a&&!n?a:n)}function l(a,n){const i=e.params.navigation;(a=makeElementsArray(a)).forEach((a=>{a&&(a.classList[n?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===a.tagName&&(a.disabled=n),e.params.watchOverflow&&e.enabled&&a.classList[e.isLocked?"add":"remove"](i.lockClass))}))}function r(){const{nextEl:a,prevEl:n}=e.navigation;if(e.params.loop)return l(n,!1),void l(a,!1);l(n,e.isBeginning&&!e.params.rewind),l(a,e.isEnd&&!e.params.rewind)}function o(a){a.preventDefault(),(!e.isBeginning||e.params.loop||e.params.rewind)&&(e.slidePrev(),t("navigationPrev"))}function d(a){a.preventDefault(),(!e.isEnd||e.params.loop||e.params.rewind)&&(e.slideNext(),t("navigationNext"))}function c(){const a=e.params.navigation;if(e.params.navigation=createElementIfNotDefined(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!a.nextEl&&!a.prevEl)return;let n=s(a.nextEl),i=s(a.prevEl);Object.assign(e.navigation,{nextEl:n,prevEl:i}),n=makeElementsArray(n),i=makeElementsArray(i);const t=(n,i)=>{n&&n.addEventListener("click","next"===i?d:o),!e.enabled&&n&&n.classList.add(...a.lockClass.split(" "))};n.forEach((a=>t(a,"next"))),i.forEach((a=>t(a,"prev")))}function m(){let{nextEl:a,prevEl:n}=e.navigation;a=makeElementsArray(a),n=makeElementsArray(n);const i=(a,n)=>{a.removeEventListener("click","next"===n?d:o),a.classList.remove(...e.params.navigation.disabledClass.split(" "))};a.forEach((a=>i(a,"next"))),n.forEach((a=>i(a,"prev")))}n({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,prevEl:null},i("init",(()=>{!1===e.params.navigation.enabled?p():(c(),r())})),i("toEdge fromEdge lock unlock",(()=>{r()})),i("destroy",(()=>{m()})),i("enable disable",(()=>{let{nextEl:a,prevEl:n}=e.navigation;a=makeElementsArray(a),n=makeElementsArray(n),e.enabled?r():[...a,...n].filter((a=>!!a)).forEach((a=>a.classList.add(e.params.navigation.lockClass)))})),i("click",((a,n)=>{let{nextEl:i,prevEl:s}=e.navigation;i=makeElementsArray(i),s=makeElementsArray(s);const l=n.target;let r=s.includes(l)||i.includes(l);if(e.isElement&&!r){const a=n.path||n.composedPath&&n.composedPath();a&&(r=a.find((a=>i.includes(a)||s.includes(a))))}if(e.params.navigation.hideOnClick&&!r){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===l||e.pagination.el.contains(l)))return;let a;i.length?a=i[0].classList.contains(e.params.navigation.hiddenClass):s.length&&(a=s[0].classList.contains(e.params.navigation.hiddenClass)),t(!0===a?"navigationShow":"navigationHide"),[...i,...s].filter((a=>!!a)).forEach((a=>a.classList.toggle(e.params.navigation.hiddenClass)))}}));const p=()=>{e.el.classList.add(...e.params.navigation.navigationDisabledClass.split(" ")),m()};Object.assign(e.navigation,{enable:()=>{e.el.classList.remove(...e.params.navigation.navigationDisabledClass.split(" ")),c(),r()},disable:p,update:r,init:c,destroy:m})}export{Navigation as default}; +//# sourceMappingURL=navigation.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/navigation.min.mjs.map b/source/vendor/swiper-bundle/modules/navigation.min.mjs.map new file mode 100644 index 0000000..8b5bbb2 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"navigation.mjs.mjs","names":["createElementIfNotDefined","makeElementsArray","Navigation","_ref","swiper","extendParams","on","emit","getEl","el","res","isElement","querySelector","document","querySelectorAll","params","uniqueNavElements","length","toggleEl","disabled","navigation","forEach","subEl","classList","disabledClass","split","tagName","watchOverflow","enabled","isLocked","lockClass","update","nextEl","prevEl","loop","isBeginning","rewind","isEnd","onPrevClick","e","preventDefault","slidePrev","onNextClick","slideNext","init","originalParams","Object","assign","initButton","dir","addEventListener","add","destroy","destroyButton","removeEventListener","remove","hideOnClick","hiddenClass","navigationDisabledClass","disable","filter","_s","targetEl","target","targetIsButton","includes","path","composedPath","find","pathEl","pagination","clickable","contains","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/navigation.mjs b/source/vendor/swiper-bundle/modules/navigation.mjs new file mode 100644 index 0000000..3c23caf --- /dev/null +++ b/source/vendor/swiper-bundle/modules/navigation.mjs @@ -0,0 +1,200 @@ +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { m as makeElementsArray } from '../shared/utils.mjs'; + +function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } else if (res && res.length === 1) { + res = res[0]; + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); + if (swiper.isElement && !targetIsButton) { + const path = e.path || e.composedPath && e.composedPath(); + if (path) { + targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); + } + } + if (swiper.params.navigation.hideOnClick && !targetIsButton) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); +} + +export { Navigation as default }; diff --git a/source/vendor/swiper-bundle/modules/navigation.scss b/source/vendor/swiper-bundle/modules/navigation.scss new file mode 100644 index 0000000..f0ab8ce --- /dev/null +++ b/source/vendor/swiper-bundle/modules/navigation.scss @@ -0,0 +1,87 @@ +@import '../swiper-vars.scss'; +@at-root { + :root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ + } +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + } + .swiper-rtl & svg { + transform: rotate(180deg); + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev, +.swiper-button-next { + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; + &:after { + content: 'next'; + } +} +/* Navigation font end */ diff --git a/source/vendor/swiper-bundle/modules/pagination-element.css b/source/vendor/swiper-bundle/modules/pagination-element.css new file mode 100644 index 0000000..cae824f --- /dev/null +++ b/source/vendor/swiper-bundle/modules/pagination-element.css @@ -0,0 +1,184 @@ +:host { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} diff --git a/source/vendor/swiper-bundle/modules/pagination-element.min.css b/source/vendor/swiper-bundle/modules/pagination-element.min.css new file mode 100644 index 0000000..398a345 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/pagination-element.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/pagination.css b/source/vendor/swiper-bundle/modules/pagination.css new file mode 100644 index 0000000..20bda39 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/pagination.css @@ -0,0 +1,184 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} diff --git a/source/vendor/swiper-bundle/modules/pagination.less b/source/vendor/swiper-bundle/modules/pagination.less new file mode 100644 index 0000000..202e40c --- /dev/null +++ b/source/vendor/swiper-bundle/modules/pagination.less @@ -0,0 +1,187 @@ +@import url('../swiper-vars.less'); + +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + button& { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/source/vendor/swiper-bundle/modules/pagination.min.css b/source/vendor/swiper-bundle/modules/pagination.min.css new file mode 100644 index 0000000..398a345 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/pagination.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/pagination.min.mjs b/source/vendor/swiper-bundle/modules/pagination.min.mjs new file mode 100644 index 0000000..0db352f --- /dev/null +++ b/source/vendor/swiper-bundle/modules/pagination.min.mjs @@ -0,0 +1,2 @@ +import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{m as makeElementsArray,f as elementOuterSize,h as elementIndex,a as elementParents}from"../shared/utils.min.mjs";function Pagination(e){let{swiper:a,extendParams:s,on:l,emit:t}=e;const i="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${i}-bullet`,bulletActiveClass:`${i}-bullet-active`,modifierClass:`${i}-`,currentClass:`${i}-current`,totalClass:`${i}-total`,hiddenClass:`${i}-hidden`,progressbarFillClass:`${i}-progressbar-fill`,progressbarOppositeClass:`${i}-progressbar-opposite`,clickableClass:`${i}-clickable`,lockClass:`${i}-lock`,horizontalClass:`${i}-horizontal`,verticalClass:`${i}-vertical`,paginationDisabledClass:`${i}-disabled`}}),a.pagination={el:null,bullets:[]};let r=0;function o(){return!a.params.pagination.el||!a.pagination.el||Array.isArray(a.pagination.el)&&0===a.pagination.el.length}function p(e,s){const{bulletActiveClass:l}=a.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${l}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${l}-${s}-${s}`))}function c(e){const s=e.target.closest(classesToSelector(a.params.pagination.bulletClass));if(!s)return;e.preventDefault();const l=elementIndex(s)*a.params.slidesPerGroup;if(a.params.loop){if(a.realIndex===l)return;a.slideToLoop(l)}else a.slideTo(l)}function d(){const e=a.rtl,s=a.params.pagination;if(o())return;let l,i,c=a.pagination.el;c=makeElementsArray(c);const d=a.virtual&&a.params.virtual.enabled?a.virtual.slides.length:a.slides.length,m=a.params.loop?Math.ceil(d/a.params.slidesPerGroup):a.snapGrid.length;if(a.params.loop?(i=a.previousRealIndex||0,l=a.params.slidesPerGroup>1?Math.floor(a.realIndex/a.params.slidesPerGroup):a.realIndex):void 0!==a.snapIndex?(l=a.snapIndex,i=a.previousSnapIndex):(i=a.previousIndex||0,l=a.activeIndex||0),"bullets"===s.type&&a.pagination.bullets&&a.pagination.bullets.length>0){const t=a.pagination.bullets;let o,d,m;if(s.dynamicBullets&&(n=elementOuterSize(t[0],a.isHorizontal()?"width":"height",!0),c.forEach((e=>{e.style[a.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==i&&(r+=l-(i||0),r>s.dynamicMainBullets-1?r=s.dynamicMainBullets-1:r<0&&(r=0)),o=Math.max(l-r,0),d=o+(Math.min(t.length,s.dynamicMainBullets)-1),m=(d+o)/2),t.forEach((e=>{const a=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...a)})),c.length>1)t.forEach((e=>{const t=elementIndex(e);t===l?e.classList.add(...s.bulletActiveClass.split(" ")):a.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(t>=o&&t<=d&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),t===o&&p(e,"prev"),t===d&&p(e,"next"))}));else{const e=t[l];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),a.isElement&&t.forEach(((e,a)=>{e.setAttribute("part",a===l?"bullet-active":"bullet")})),s.dynamicBullets){const e=t[o],a=t[d];for(let e=o;e<=d;e+=1)t[e]&&t[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));p(e,"prev"),p(a,"next")}}if(s.dynamicBullets){const l=Math.min(t.length,s.dynamicMainBullets+4),i=(n*l-n)/2-m*n,r=e?"right":"left";t.forEach((e=>{e.style[a.isHorizontal()?r:"top"]=`${i}px`}))}}c.forEach(((e,i)=>{if("fraction"===s.type&&(e.querySelectorAll(classesToSelector(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(l+1)})),e.querySelectorAll(classesToSelector(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let t;t=s.progressbarOpposite?a.isHorizontal()?"vertical":"horizontal":a.isHorizontal()?"horizontal":"vertical";const i=(l+1)/m;let n=1,r=1;"horizontal"===t?n=i:r=i,e.querySelectorAll(classesToSelector(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${r})`,e.style.transitionDuration=`${a.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(a,l+1,m),0===i&&t("paginationRender",e)):(0===i&&t("paginationRender",e),t("paginationUpdate",e)),a.params.watchOverflow&&a.enabled&&e.classList[a.isLocked?"add":"remove"](s.lockClass)}))}function m(){const e=a.params.pagination;if(o())return;const s=a.virtual&&a.params.virtual.enabled?a.virtual.slides.length:a.grid&&a.params.grid.rows>1?a.slides.length/Math.ceil(a.params.grid.rows):a.slides.length;let l=a.pagination.el;l=makeElementsArray(l);let i="";if("bullets"===e.type){let l=a.params.loop?Math.ceil(s/a.params.slidesPerGroup):a.snapGrid.length;a.params.freeMode&&a.params.freeMode.enabled&&l>s&&(l=s);for(let s=0;s`}"fraction"===e.type&&(i=e.renderFraction?e.renderFraction.call(a,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(i=e.renderProgressbar?e.renderProgressbar.call(a,e.progressbarFillClass):``),a.pagination.bullets=[],l.forEach((s=>{"custom"!==e.type&&(s.innerHTML=i||""),"bullets"===e.type&&a.pagination.bullets.push(...s.querySelectorAll(classesToSelector(e.bulletClass)))})),"custom"!==e.type&&t("paginationRender",l[0])}function u(){a.params.pagination=createElementIfNotDefined(a,a.originalParams.pagination,a.params.pagination,{el:"swiper-pagination"});const e=a.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&a.isElement&&(s=a.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(a.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...a.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>elementParents(e,".swiper")[0]===a.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(a.pagination,{el:s}),s=makeElementsArray(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(a.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),r=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),a.enabled||s.classList.add(e.lockClass)})))}function g(){const e=a.params.pagination;if(o())return;let s=a.pagination.el;s&&(s=makeElementsArray(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(a.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))}))),a.pagination.bullets&&a.pagination.bullets.forEach((a=>a.classList.remove(...e.bulletActiveClass.split(" "))))}l("changeDirection",(()=>{if(!a.pagination||!a.pagination.el)return;const e=a.params.pagination;let{el:s}=a.pagination;s=makeElementsArray(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(a.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),l("init",(()=>{!1===a.params.pagination.enabled?b():(u(),m(),d())})),l("activeIndexChange",(()=>{void 0===a.snapIndex&&d()})),l("snapIndexChange",(()=>{d()})),l("snapGridLengthChange",(()=>{m(),d()})),l("destroy",(()=>{g()})),l("enable disable",(()=>{let{el:e}=a.pagination;e&&(e=makeElementsArray(e),e.forEach((e=>e.classList[a.enabled?"remove":"add"](a.params.pagination.lockClass))))})),l("lock unlock",(()=>{d()})),l("click",((e,s)=>{const l=s.target,i=makeElementsArray(a.pagination.el);if(a.params.pagination.el&&a.params.pagination.hideOnClick&&i&&i.length>0&&!l.classList.contains(a.params.pagination.bulletClass)){if(a.navigation&&(a.navigation.nextEl&&l===a.navigation.nextEl||a.navigation.prevEl&&l===a.navigation.prevEl))return;const e=i[0].classList.contains(a.params.pagination.hiddenClass);t(!0===e?"paginationShow":"paginationHide"),i.forEach((e=>e.classList.toggle(a.params.pagination.hiddenClass)))}}));const b=()=>{a.el.classList.add(a.params.pagination.paginationDisabledClass);let{el:e}=a.pagination;e&&(e=makeElementsArray(e),e.forEach((e=>e.classList.add(a.params.pagination.paginationDisabledClass)))),g()};Object.assign(a.pagination,{enable:()=>{a.el.classList.remove(a.params.pagination.paginationDisabledClass);let{el:e}=a.pagination;e&&(e=makeElementsArray(e),e.forEach((e=>e.classList.remove(a.params.pagination.paginationDisabledClass)))),u(),m(),d()},disable:b,render:m,update:d,init:u,destroy:g})}export{Pagination as default}; +//# sourceMappingURL=pagination.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/pagination.min.mjs.map b/source/vendor/swiper-bundle/modules/pagination.min.mjs.map new file mode 100644 index 0000000..eee8355 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/pagination.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"pagination.mjs.mjs","names":["classesToSelector","createElementIfNotDefined","makeElementsArray","elementOuterSize","elementIndex","elementParents","Pagination","_ref","swiper","extendParams","on","emit","pfx","bulletSize","pagination","el","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","type","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","params","Array","isArray","length","setSideBullets","bulletEl","position","classList","add","onBulletClick","e","target","closest","preventDefault","index","slidesPerGroup","loop","realIndex","slideToLoop","slideTo","update","rtl","current","previousIndex","slidesLength","virtual","enabled","slides","total","Math","ceil","snapGrid","previousRealIndex","floor","snapIndex","previousSnapIndex","activeIndex","firstIndex","lastIndex","midIndex","isHorizontal","forEach","subEl","style","undefined","max","min","classesToRemove","map","suffix","s","includes","split","flat","remove","bullet","bulletIndex","isElement","setAttribute","firstDisplayedBullet","lastDisplayedBullet","i","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","querySelectorAll","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transform","transitionDuration","speed","innerHTML","watchOverflow","isLocked","render","grid","rows","paginationHTML","numberOfBullets","freeMode","call","push","init","originalParams","querySelector","document","uniqueNavElements","filter","Object","assign","addEventListener","destroy","removeEventListener","disable","_s","targetEl","contains","navigation","nextEl","prevEl","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/pagination.mjs b/source/vendor/swiper-bundle/modules/pagination.mjs new file mode 100644 index 0000000..e38786d --- /dev/null +++ b/source/vendor/swiper-bundle/modules/pagination.mjs @@ -0,0 +1,443 @@ +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs'; + +function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); +} + +export { Pagination as default }; diff --git a/source/vendor/swiper-bundle/modules/pagination.scss b/source/vendor/swiper-bundle/modules/pagination.scss new file mode 100644 index 0000000..5595484 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/pagination.scss @@ -0,0 +1,188 @@ +@import '../swiper-vars.scss'; +@at-root { + :root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ + } +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + @at-root button#{&} { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/source/vendor/swiper-bundle/modules/parallax-element.css b/source/vendor/swiper-bundle/modules/parallax-element.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/parallax-element.min.css b/source/vendor/swiper-bundle/modules/parallax-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/parallax.css b/source/vendor/swiper-bundle/modules/parallax.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/parallax.less b/source/vendor/swiper-bundle/modules/parallax.less new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/parallax.min.css b/source/vendor/swiper-bundle/modules/parallax.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/parallax.min.mjs b/source/vendor/swiper-bundle/modules/parallax.min.mjs new file mode 100644 index 0000000..b70fbd0 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/parallax.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren}from"../shared/utils.min.mjs";function Parallax(a){let{swiper:e,extendParams:t,on:l}=a;t({parallax:{enabled:!1}});const r="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",s=(a,t)=>{const{rtl:l}=e,r=l?-1:1,s=a.getAttribute("data-swiper-parallax")||"0";let i=a.getAttribute("data-swiper-parallax-x"),p=a.getAttribute("data-swiper-parallax-y");const n=a.getAttribute("data-swiper-parallax-scale"),o=a.getAttribute("data-swiper-parallax-opacity"),d=a.getAttribute("data-swiper-parallax-rotate");if(i||p?(i=i||"0",p=p||"0"):e.isHorizontal()?(i=s,p="0"):(p=s,i="0"),i=i.indexOf("%")>=0?parseInt(i,10)*t*r+"%":i*t*r+"px",p=p.indexOf("%")>=0?parseInt(p,10)*t+"%":p*t+"px",null!=o){const e=o-(o-1)*(1-Math.abs(t));a.style.opacity=e}let x=`translate3d(${i}, ${p}, 0px)`;if(null!=n){x+=` scale(${n-(n-1)*(1-Math.abs(t))})`}if(d&&null!=d){x+=` rotate(${d*t*-1}deg)`}a.style.transform=x},i=()=>{const{el:a,slides:t,progress:l,snapGrid:i,isElement:p}=e,n=elementChildren(a,r);e.isElement&&n.push(...elementChildren(e.hostEl,r)),n.forEach((a=>{s(a,l)})),t.forEach(((a,t)=>{let p=a.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(p+=Math.ceil(t/2)-l*(i.length-1)),p=Math.min(Math.max(p,-1),1),a.querySelectorAll(`${r}, [data-swiper-parallax-rotate]`).forEach((a=>{s(a,p)}))}))};l("beforeInit",(()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)})),l("init",(()=>{e.params.parallax.enabled&&i()})),l("setTranslate",(()=>{e.params.parallax.enabled&&i()})),l("setTransition",((a,t)=>{e.params.parallax.enabled&&function(a){void 0===a&&(a=e.params.speed);const{el:t,hostEl:l}=e,s=[...t.querySelectorAll(r)];e.isElement&&s.push(...l.querySelectorAll(r)),s.forEach((e=>{let t=parseInt(e.getAttribute("data-swiper-parallax-duration"),10)||a;0===a&&(t=0),e.style.transitionDuration=`${t}ms`}))}(t)}))}export{Parallax as default}; +//# sourceMappingURL=parallax.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/parallax.min.mjs.map b/source/vendor/swiper-bundle/modules/parallax.min.mjs.map new file mode 100644 index 0000000..395322a --- /dev/null +++ b/source/vendor/swiper-bundle/modules/parallax.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"parallax.mjs.mjs","names":["elementChildren","Parallax","_ref","swiper","extendParams","on","parallax","enabled","elementsSelector","setTransform","el","progress","rtl","rtlFactor","p","getAttribute","x","y","scale","opacity","rotate","isHorizontal","indexOf","parseInt","currentOpacity","Math","abs","style","transform","setTranslate","slides","snapGrid","isElement","elements","push","hostEl","forEach","subEl","slideEl","slideIndex","slideProgress","params","slidesPerGroup","slidesPerView","ceil","length","min","max","querySelectorAll","watchSlidesProgress","originalParams","_swiper","duration","speed","parallaxEl","parallaxDuration","transitionDuration","setTransition"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/parallax.mjs b/source/vendor/swiper-bundle/modules/parallax.mjs new file mode 100644 index 0000000..1f467de --- /dev/null +++ b/source/vendor/swiper-bundle/modules/parallax.mjs @@ -0,0 +1,124 @@ +import { e as elementChildren } from '../shared/utils.mjs'; + +function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); +} + +export { Parallax as default }; diff --git a/source/vendor/swiper-bundle/modules/parallax.scss b/source/vendor/swiper-bundle/modules/parallax.scss new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/scrollbar-element.css b/source/vendor/swiper-bundle/modules/scrollbar-element.css new file mode 100644 index 0000000..b6b755e --- /dev/null +++ b/source/vendor/swiper-bundle/modules/scrollbar-element.css @@ -0,0 +1,58 @@ +:host { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/source/vendor/swiper-bundle/modules/scrollbar-element.min.css b/source/vendor/swiper-bundle/modules/scrollbar-element.min.css new file mode 100644 index 0000000..dc9860f --- /dev/null +++ b/source/vendor/swiper-bundle/modules/scrollbar-element.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/scrollbar.css b/source/vendor/swiper-bundle/modules/scrollbar.css new file mode 100644 index 0000000..678451c --- /dev/null +++ b/source/vendor/swiper-bundle/modules/scrollbar.css @@ -0,0 +1,58 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/source/vendor/swiper-bundle/modules/scrollbar.less b/source/vendor/swiper-bundle/modules/scrollbar.less new file mode 100644 index 0000000..4920d9b --- /dev/null +++ b/source/vendor/swiper-bundle/modules/scrollbar.less @@ -0,0 +1,59 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + -ms-touch-action: none; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/source/vendor/swiper-bundle/modules/scrollbar.min.css b/source/vendor/swiper-bundle/modules/scrollbar.min.css new file mode 100644 index 0000000..dc9860f --- /dev/null +++ b/source/vendor/swiper-bundle/modules/scrollbar.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/scrollbar.min.mjs b/source/vendor/swiper-bundle/modules/scrollbar.min.mjs new file mode 100644 index 0000000..a190521 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/scrollbar.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{m as makeElementsArray,i as classesToTokens,c as createElement,n as nextTick,b as elementOffset}from"../shared/utils.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";function Scrollbar(s){let{swiper:l,extendParams:e,on:a,emit:r}=s;const t=getDocument();let o,n,i,c,p=!1,m=null,d=null;function b(){if(!l.params.scrollbar.el||!l.scrollbar.el)return;const{scrollbar:s,rtlTranslate:e}=l,{dragEl:a,el:r}=s,t=l.params.scrollbar,o=l.params.loop?l.progressLoop:l.progress;let c=n,p=(i-n)*o;e?(p=-p,p>0?(c=n-p,p=0):-p+n>i&&(c=i+p)):p<0?(c=n+p,p=0):p+n>i&&(c=i-p),l.isHorizontal()?(a.style.transform=`translate3d(${p}px, 0, 0)`,a.style.width=`${c}px`):(a.style.transform=`translate3d(0px, ${p}px, 0)`,a.style.height=`${c}px`),t.hide&&(clearTimeout(m),r.style.opacity=1,m=setTimeout((()=>{r.style.opacity=0,r.style.transitionDuration="400ms"}),1e3))}function u(){if(!l.params.scrollbar.el||!l.scrollbar.el)return;const{scrollbar:s}=l,{dragEl:e,el:a}=s;e.style.width="",e.style.height="",i=l.isHorizontal()?a.offsetWidth:a.offsetHeight,c=l.size/(l.virtualSize+l.params.slidesOffsetBefore-(l.params.centeredSlides?l.snapGrid[0]:0)),n="auto"===l.params.scrollbar.dragSize?i*c:parseInt(l.params.scrollbar.dragSize,10),l.isHorizontal()?e.style.width=`${n}px`:e.style.height=`${n}px`,a.style.display=c>=1?"none":"",l.params.scrollbar.hide&&(a.style.opacity=0),l.params.watchOverflow&&l.enabled&&s.el.classList[l.isLocked?"add":"remove"](l.params.scrollbar.lockClass)}function f(s){return l.isHorizontal()?s.clientX:s.clientY}function g(s){const{scrollbar:e,rtlTranslate:a}=l,{el:r}=e;let t;t=(f(s)-elementOffset(r)[l.isHorizontal()?"left":"top"]-(null!==o?o:n/2))/(i-n),t=Math.max(Math.min(t,1),0),a&&(t=1-t);const c=l.minTranslate()+(l.maxTranslate()-l.minTranslate())*t;l.updateProgress(c),l.setTranslate(c),l.updateActiveIndex(),l.updateSlidesClasses()}function y(s){const e=l.params.scrollbar,{scrollbar:a,wrapperEl:t}=l,{el:n,dragEl:i}=a;p=!0,o=s.target===i?f(s)-s.target.getBoundingClientRect()[l.isHorizontal()?"left":"top"]:null,s.preventDefault(),s.stopPropagation(),t.style.transitionDuration="100ms",i.style.transitionDuration="100ms",g(s),clearTimeout(d),n.style.transitionDuration="0ms",e.hide&&(n.style.opacity=1),l.params.cssMode&&(l.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",s)}function h(s){const{scrollbar:e,wrapperEl:a}=l,{el:t,dragEl:o}=e;p&&(s.preventDefault&&s.cancelable?s.preventDefault():s.returnValue=!1,g(s),a.style.transitionDuration="0ms",t.style.transitionDuration="0ms",o.style.transitionDuration="0ms",r("scrollbarDragMove",s))}function T(s){const e=l.params.scrollbar,{scrollbar:a,wrapperEl:t}=l,{el:o}=a;p&&(p=!1,l.params.cssMode&&(l.wrapperEl.style["scroll-snap-type"]="",t.style.transitionDuration=""),e.hide&&(clearTimeout(d),d=nextTick((()=>{o.style.opacity=0,o.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",s),e.snapOnRelease&&l.slideToClosest())}function v(s){const{scrollbar:e,params:a}=l,r=e.el;if(!r)return;const o=r,n=!!a.passiveListeners&&{passive:!1,capture:!1},i=!!a.passiveListeners&&{passive:!0,capture:!1};if(!o)return;const c="on"===s?"addEventListener":"removeEventListener";o[c]("pointerdown",y,n),t[c]("pointermove",h,n),t[c]("pointerup",T,i)}function D(){const{scrollbar:s,el:e}=l;l.params.scrollbar=createElementIfNotDefined(l,l.originalParams.scrollbar,l.params.scrollbar,{el:"swiper-scrollbar"});const a=l.params.scrollbar;if(!a.el)return;let r,o;if("string"==typeof a.el&&l.isElement&&(r=l.el.querySelector(a.el)),r||"string"!=typeof a.el)r||(r=a.el);else if(r=t.querySelectorAll(a.el),!r.length)return;l.params.uniqueNavElements&&"string"==typeof a.el&&r.length>1&&1===e.querySelectorAll(a.el).length&&(r=e.querySelector(a.el)),r.length>0&&(r=r[0]),r.classList.add(l.isHorizontal()?a.horizontalClass:a.verticalClass),r&&(o=r.querySelector(classesToSelector(l.params.scrollbar.dragClass)),o||(o=createElement("div",l.params.scrollbar.dragClass),r.append(o))),Object.assign(s,{el:r,dragEl:o}),a.draggable&&l.params.scrollbar.el&&l.scrollbar.el&&v("on"),r&&r.classList[l.enabled?"remove":"add"](...classesToTokens(l.params.scrollbar.lockClass))}function C(){const s=l.params.scrollbar,e=l.scrollbar.el;e&&e.classList.remove(...classesToTokens(l.isHorizontal()?s.horizontalClass:s.verticalClass)),l.params.scrollbar.el&&l.scrollbar.el&&v("off")}e({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),l.scrollbar={el:null,dragEl:null},a("changeDirection",(()=>{if(!l.scrollbar||!l.scrollbar.el)return;const s=l.params.scrollbar;let{el:e}=l.scrollbar;e=makeElementsArray(e),e.forEach((e=>{e.classList.remove(s.horizontalClass,s.verticalClass),e.classList.add(l.isHorizontal()?s.horizontalClass:s.verticalClass)}))})),a("init",(()=>{!1===l.params.scrollbar.enabled?E():(D(),u(),b())})),a("update resize observerUpdate lock unlock changeDirection",(()=>{u()})),a("setTranslate",(()=>{b()})),a("setTransition",((s,e)=>{!function(s){l.params.scrollbar.el&&l.scrollbar.el&&(l.scrollbar.dragEl.style.transitionDuration=`${s}ms`)}(e)})),a("enable disable",(()=>{const{el:s}=l.scrollbar;s&&s.classList[l.enabled?"remove":"add"](...classesToTokens(l.params.scrollbar.lockClass))})),a("destroy",(()=>{C()}));const E=()=>{l.el.classList.add(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),l.scrollbar.el&&l.scrollbar.el.classList.add(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),C()};Object.assign(l.scrollbar,{enable:()=>{l.el.classList.remove(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),l.scrollbar.el&&l.scrollbar.el.classList.remove(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),D(),u(),b()},disable:E,updateSize:u,setTranslate:b,init:D,destroy:C})}export{Scrollbar as default}; +//# sourceMappingURL=scrollbar.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/scrollbar.min.mjs.map b/source/vendor/swiper-bundle/modules/scrollbar.min.mjs.map new file mode 100644 index 0000000..84930e3 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/scrollbar.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"scrollbar.mjs.mjs","names":["getDocument","makeElementsArray","classesToTokens","createElement","nextTick","elementOffset","createElementIfNotDefined","classesToSelector","Scrollbar","_ref","swiper","extendParams","on","emit","document","dragStartPos","dragSize","trackSize","divider","isTouched","timeout","dragTimeout","setTranslate","params","scrollbar","el","rtlTranslate","rtl","dragEl","progress","loop","progressLoop","newSize","newPos","isHorizontal","style","transform","width","height","hide","clearTimeout","opacity","setTimeout","transitionDuration","updateSize","offsetWidth","offsetHeight","size","virtualSize","slidesOffsetBefore","centeredSlides","snapGrid","parseInt","display","watchOverflow","enabled","classList","isLocked","lockClass","getPointerPosition","e","clientX","clientY","setDragPosition","positionRatio","Math","max","min","position","minTranslate","maxTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","onDragStart","wrapperEl","target","getBoundingClientRect","preventDefault","stopPropagation","cssMode","onDragMove","cancelable","returnValue","onDragEnd","snapOnRelease","slideToClosest","events","method","activeListener","passiveListeners","passive","capture","passiveListener","eventMethod","init","swiperEl","originalParams","isElement","querySelector","querySelectorAll","length","uniqueNavElements","add","horizontalClass","verticalClass","dragClass","append","Object","assign","draggable","destroy","remove","scrollbarDisabledClass","forEach","subEl","disable","_s","duration","setTransition","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/scrollbar.mjs b/source/vendor/swiper-bundle/modules/scrollbar.mjs new file mode 100644 index 0000000..052fee6 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/scrollbar.mjs @@ -0,0 +1,366 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; + +function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); +} + +export { Scrollbar as default }; diff --git a/source/vendor/swiper-bundle/modules/scrollbar.scss b/source/vendor/swiper-bundle/modules/scrollbar.scss new file mode 100644 index 0000000..93882d3 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/scrollbar.scss @@ -0,0 +1,61 @@ +@at-root { + :root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ + } +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + -ms-touch-action: none; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/source/vendor/swiper-bundle/modules/thumbs-element.css b/source/vendor/swiper-bundle/modules/thumbs-element.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/thumbs-element.min.css b/source/vendor/swiper-bundle/modules/thumbs-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/thumbs.css b/source/vendor/swiper-bundle/modules/thumbs.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/thumbs.less b/source/vendor/swiper-bundle/modules/thumbs.less new file mode 100644 index 0000000..9eaa1b3 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/thumbs.less @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/source/vendor/swiper-bundle/modules/thumbs.min.css b/source/vendor/swiper-bundle/modules/thumbs.min.css new file mode 100644 index 0000000..e69de29 diff --git a/source/vendor/swiper-bundle/modules/thumbs.min.mjs b/source/vendor/swiper-bundle/modules/thumbs.min.mjs new file mode 100644 index 0000000..36c3e5f --- /dev/null +++ b/source/vendor/swiper-bundle/modules/thumbs.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{l as isObject,e as elementChildren}from"../shared/utils.min.mjs";function Thumb(e){let{swiper:s,extendParams:i,on:t}=e;i({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,a=!1;function l(){const e=s.thumbs.swiper;if(!e||e.destroyed)return;const i=e.clickedIndex,t=e.clickedSlide;if(t&&t.classList.contains(s.params.thumbs.slideThumbActiveClass))return;if(null==i)return;let r;r=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):i,s.params.loop?s.slideToLoop(r):s.slideTo(r)}function n(){const{thumbs:e}=s.params;if(r)return!1;r=!0;const i=s.constructor;if(e.swiper instanceof i)s.thumbs.swiper=e.swiper,Object.assign(s.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(s.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),s.thumbs.swiper.update();else if(isObject(e.swiper)){const t=Object.assign({},e.swiper);Object.assign(t,{watchSlidesProgress:!0,slideToClickedSlide:!1}),s.thumbs.swiper=new i(t),a=!0}return s.thumbs.swiper.el.classList.add(s.params.thumbs.thumbsContainerClass),s.thumbs.swiper.on("tap",l),!0}function d(e){const i=s.thumbs.swiper;if(!i||i.destroyed)return;const t="auto"===i.params.slidesPerView?i.slidesPerViewDynamic():i.params.slidesPerView;let r=1;const a=s.params.thumbs.slideThumbActiveClass;if(s.params.slidesPerView>1&&!s.params.centeredSlides&&(r=s.params.slidesPerView),s.params.thumbs.multipleActiveThumbs||(r=1),r=Math.floor(r),i.slides.forEach((e=>e.classList.remove(a))),i.params.loop||i.params.virtual&&i.params.virtual.enabled)for(let e=0;e{e.classList.add(a)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${s.realIndex}`))[0];a=i.slides.indexOf(e),d=s.activeIndex>s.previousIndex?"next":"prev"}else a=s.realIndex,d=a>s.previousIndex?"next":"prev";n&&(a+="next"===d?l:-1*l),i.visibleSlidesIndexes&&i.visibleSlidesIndexes.indexOf(a)<0&&(i.params.centeredSlides?a=a>r?a-Math.floor(t/2)+1:a+Math.floor(t/2)-1:a>r&&i.params.slidesPerGroup,i.slideTo(a,e?0:void 0))}}s.thumbs={swiper:null},t("beforeInit",(()=>{const{thumbs:e}=s.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const i=getDocument(),t=()=>{const t="string"==typeof e.swiper?i.querySelector(e.swiper):e.swiper;if(t&&t.swiper)e.swiper=t.swiper,n(),d(!0);else if(t){const i=`${s.params.eventsPrefix}init`,r=a=>{e.swiper=a.detail[0],t.removeEventListener(i,r),n(),d(!0),e.swiper.update(),s.update()};t.addEventListener(i,r)}return t},r=()=>{if(s.destroyed)return;t()||requestAnimationFrame(r)};requestAnimationFrame(r)}else n(),d(!0)})),t("slideChange update resize observerUpdate",(()=>{d()})),t("setTransition",((e,i)=>{const t=s.thumbs.swiper;t&&!t.destroyed&&t.setTransition(i)})),t("beforeDestroy",(()=>{const e=s.thumbs.swiper;e&&!e.destroyed&&a&&e.destroy()})),Object.assign(s.thumbs,{init:n,update:d})}export{Thumb as default}; +//# sourceMappingURL=thumbs.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/thumbs.min.mjs.map b/source/vendor/swiper-bundle/modules/thumbs.min.mjs.map new file mode 100644 index 0000000..3c78fc6 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/thumbs.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"thumbs.mjs.mjs","names":["getDocument","isObject","elementChildren","Thumb","_ref","swiper","extendParams","on","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","initialized","swiperCreated","onThumbClick","thumbsSwiper","destroyed","clickedIndex","clickedSlide","classList","contains","params","slideToIndex","loop","parseInt","getAttribute","slideToLoop","slideTo","init","thumbsParams","SwiperClass","constructor","Object","assign","originalParams","watchSlidesProgress","slideToClickedSlide","update","thumbsSwiperParams","el","add","initial","slidesPerView","slidesPerViewDynamic","thumbsToActivate","thumbActiveClass","centeredSlides","Math","floor","slides","forEach","slideEl","remove","virtual","enabled","i","slidesEl","realIndex","useOffset","currentThumbsIndex","activeIndex","newThumbsIndex","direction","newThumbsSlide","filter","indexOf","previousIndex","visibleSlidesIndexes","slidesPerGroup","undefined","HTMLElement","document","getThumbsElementAndInit","thumbsElement","querySelector","eventName","eventsPrefix","onThumbsSwiper","e","detail","removeEventListener","addEventListener","watchForThumbsToAppear","requestAnimationFrame","_s","duration","setTransition","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/thumbs.mjs b/source/vendor/swiper-bundle/modules/thumbs.mjs new file mode 100644 index 0000000..218772f --- /dev/null +++ b/source/vendor/swiper-bundle/modules/thumbs.mjs @@ -0,0 +1,193 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { l as isObject, e as elementChildren } from '../shared/utils.mjs'; + +function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener(eventName, onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener(eventName, onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); +} + +export { Thumb as default }; diff --git a/source/vendor/swiper-bundle/modules/thumbs.scss b/source/vendor/swiper-bundle/modules/thumbs.scss new file mode 100644 index 0000000..9eaa1b3 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/thumbs.scss @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/source/vendor/swiper-bundle/modules/virtual-element.css b/source/vendor/swiper-bundle/modules/virtual-element.css new file mode 100644 index 0000000..432b52b --- /dev/null +++ b/source/vendor/swiper-bundle/modules/virtual-element.css @@ -0,0 +1,19 @@ +.swiper-virtual ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} diff --git a/source/vendor/swiper-bundle/modules/virtual-element.min.css b/source/vendor/swiper-bundle/modules/virtual-element.min.css new file mode 100644 index 0000000..d0e6043 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/virtual-element.min.css @@ -0,0 +1 @@ +.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/virtual.css b/source/vendor/swiper-bundle/modules/virtual.css new file mode 100644 index 0000000..60ebeea --- /dev/null +++ b/source/vendor/swiper-bundle/modules/virtual.css @@ -0,0 +1,19 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} diff --git a/source/vendor/swiper-bundle/modules/virtual.less b/source/vendor/swiper-bundle/modules/virtual.less new file mode 100644 index 0000000..824cc1e --- /dev/null +++ b/source/vendor/swiper-bundle/modules/virtual.less @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/source/vendor/swiper-bundle/modules/virtual.min.css b/source/vendor/swiper-bundle/modules/virtual.min.css new file mode 100644 index 0000000..dbb4007 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/virtual.min.css @@ -0,0 +1 @@ +.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/virtual.min.mjs b/source/vendor/swiper-bundle/modules/virtual.min.mjs new file mode 100644 index 0000000..c96dc2b --- /dev/null +++ b/source/vendor/swiper-bundle/modules/virtual.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{s as setCSSProperty,e as elementChildren,c as createElement}from"../shared/utils.min.mjs";function Virtual(e){let s,{swiper:t,extendParams:i,on:r,emit:a}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=getDocument();t.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const d=l.createElement("div");function n(e,s){const i=t.params.virtual;if(i.cache&&t.virtual.cache[s])return t.virtual.cache[s];let r;return i.renderSlide?(r=i.renderSlide.call(t,e,s),"string"==typeof r&&(d.innerHTML=r,r=d.children[0])):r=t.isElement?createElement("swiper-slide"):createElement("div",t.params.slideClass),r.setAttribute("data-swiper-slide-index",s),i.renderSlide||(r.innerHTML=e),i.cache&&(t.virtual.cache[s]=r),r}function c(e,s){const{slidesPerView:i,slidesPerGroup:r,centeredSlides:l,loop:d,initialSlide:c}=t.params;if(s&&!d&&c>0)return;const{addSlidesBefore:o,addSlidesAfter:u}=t.params.virtual,{from:p,to:h,slides:f,slidesGrid:v,offset:m}=t.virtual;t.params.cssMode||t.updateActiveIndex();const g=t.activeIndex||0;let E,x,w;E=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",l?(x=Math.floor(i/2)+r+u,w=Math.floor(i/2)+r+o):(x=i+(r-1)+u,w=(d?i:r)+o);let S=g-w,b=g+x;d||(S=Math.max(S,0),b=Math.min(b,f.length-1));let A=(t.slidesGrid[S]||0)-(t.slidesGrid[0]||0);function M(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),a("virtualUpdate")}if(d&&g>=w?(S-=w,l||(A+=t.slidesGrid[0])):d&&g{e.style[E]=A-Math.abs(t.cssOverflowAdjustment())+"px"})),t.updateProgress(),void a("virtualUpdate");if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:A,from:S,to:b,slides:function(){const e=[];for(let s=S;s<=b;s+=1)e.push(f[s]);return e}()}),void(t.params.virtual.renderExternalUpdate?M():a("virtualUpdate"));const y=[],P=[],j=e=>{let s=e;return e<0?s=f.length+e:s>=f.length&&(s-=f.length),s};if(e)t.slides.filter((e=>e.matches(`.${t.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=p;e<=h;e+=1)if(eb){const s=j(e);t.slides.filter((e=>e.matches(`.${t.params.slideClass}[data-swiper-slide-index="${s}"], swiper-slide[data-swiper-slide-index="${s}"]`))).forEach((e=>{e.remove()}))}const C=d?-f.length:0,G=d?2*f.length:f.length;for(let s=C;s=S&&s<=b){const t=j(s);void 0===h||e?P.push(t):(s>h&&P.push(t),s{t.slidesEl.append(n(f[e],e))})),d)for(let e=y.length-1;e>=0;e-=1){const s=y[e];t.slidesEl.prepend(n(f[s],s))}else y.sort(((e,s)=>s-e)),y.forEach((e=>{t.slidesEl.prepend(n(f[e],e))}));elementChildren(t.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[E]=A-Math.abs(t.cssOverflowAdjustment())+"px"})),M()}r("beforeInit",(()=>{if(!t.params.virtual.enabled)return;let e;if(void 0===t.passedParams.virtual.slides){const s=[...t.slidesEl.children].filter((e=>e.matches(`.${t.params.slideClass}, swiper-slide`)));s&&s.length&&(t.virtual.slides=[...s],e=!0,s.forEach(((e,s)=>{e.setAttribute("data-swiper-slide-index",s),t.virtual.cache[s]=e,e.remove()})))}e||(t.virtual.slides=t.params.virtual.slides),t.classNames.push(`${t.params.containerModifierClass}virtual`),t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0,c(!1,!0)})),r("setTranslate",(()=>{t.params.virtual.enabled&&(t.params.cssMode&&!t._immediateVirtual?(clearTimeout(s),s=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{t.params.virtual.enabled&&t.params.cssMode&&setCSSProperty(t.wrapperEl,"--swiper-virtual-size",`${t.virtualSize}px`)})),Object.assign(t.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let s=0;s{const i=e[t],a=i.getAttribute("data-swiper-slide-index");a&&i.setAttribute("data-swiper-slide-index",parseInt(a,10)+r),s[parseInt(t,10)+r]=i})),t.virtual.cache=s}c(!0),t.slideTo(i,0)},removeSlide:function(e){if(null==e)return;let s=t.activeIndex;if(Array.isArray(e))for(let i=e.length-1;i>=0;i-=1)t.params.virtual.cache&&(delete t.virtual.cache[e[i]],Object.keys(t.virtual.cache).forEach((s=>{s>e&&(t.virtual.cache[s-1]=t.virtual.cache[s],t.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete t.virtual.cache[s])}))),t.virtual.slides.splice(e[i],1),e[i]{s>e&&(t.virtual.cache[s-1]=t.virtual.cache[s],t.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete t.virtual.cache[s])}))),t.virtual.slides.splice(e,1),e 0) { + return; + } + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(false, true); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); +} + +export { Virtual as default }; diff --git a/source/vendor/swiper-bundle/modules/virtual.scss b/source/vendor/swiper-bundle/modules/virtual.scss new file mode 100644 index 0000000..824cc1e --- /dev/null +++ b/source/vendor/swiper-bundle/modules/virtual.scss @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/source/vendor/swiper-bundle/modules/zoom-element.css b/source/vendor/swiper-bundle/modules/zoom-element.css new file mode 100644 index 0000000..f81a92b --- /dev/null +++ b/source/vendor/swiper-bundle/modules/zoom-element.css @@ -0,0 +1,5 @@ +/* Zoom container styles start *//* Zoom container styles end */ +::slotted(.swiper-slide-zoomed) { + cursor: move; + touch-action: none; +} diff --git a/source/vendor/swiper-bundle/modules/zoom-element.min.css b/source/vendor/swiper-bundle/modules/zoom-element.min.css new file mode 100644 index 0000000..17d073f --- /dev/null +++ b/source/vendor/swiper-bundle/modules/zoom-element.min.css @@ -0,0 +1 @@ +::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/zoom.css b/source/vendor/swiper-bundle/modules/zoom.css new file mode 100644 index 0000000..40f5b10 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/zoom.css @@ -0,0 +1,21 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Zoom container styles end */ +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/source/vendor/swiper-bundle/modules/zoom.less b/source/vendor/swiper-bundle/modules/zoom.less new file mode 100644 index 0000000..d226ae9 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/zoom.less @@ -0,0 +1,23 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} +/* Zoom container styles end */ + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/source/vendor/swiper-bundle/modules/zoom.min.css b/source/vendor/swiper-bundle/modules/zoom.min.css new file mode 100644 index 0000000..e55cd9a --- /dev/null +++ b/source/vendor/swiper-bundle/modules/zoom.min.css @@ -0,0 +1 @@ +.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/zoom.min.mjs b/source/vendor/swiper-bundle/modules/zoom.min.mjs new file mode 100644 index 0000000..83bc6cc --- /dev/null +++ b/source/vendor/swiper-bundle/modules/zoom.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren,a as elementParents,b as elementOffset,j as getTranslate}from"../shared/utils.min.mjs";function Zoom(e){let{swiper:t,extendParams:i,on:a,emit:r}=e;const s=getWindow();i({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let o,n,l=1,m=!1;const c=[],d={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},u={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},p={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let g,h=1;function E(){if(c.length<2)return 1;const e=c[0].pageX,t=c[0].pageY,i=c[1].pageX,a=c[1].pageY;return Math.sqrt((i-e)**2+(a-t)**2)}function v(){const e=t.params.zoom,i=d.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&d.imageEl&&d.imageEl.naturalWidth){const e=d.imageEl.naturalWidth/d.imageEl.offsetWidth;return Math.min(e,i)}return i}function f(e){const i=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(i)||t.slides.filter((t=>t.contains(e.target))).length>0}function x(e){if("mouse"===e.pointerType&&c.splice(0,c.length),!f(e))return;const i=t.params.zoom;if(o=!1,n=!1,c.push(e),!(c.length<2)){if(o=!0,d.scaleStart=E(),!d.slideEl){d.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),d.slideEl||(d.slideEl=t.slides[t.activeIndex]);let a=d.slideEl.querySelector(`.${i.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=a,d.imageWrapEl=a?elementParents(d.imageEl,`.${i.containerClass}`)[0]:void 0,!d.imageWrapEl)return void(d.imageEl=void 0);d.maxRatio=v()}if(d.imageEl){const[e,t]=function(){if(c.length<2)return{x:null,y:null};const e=d.imageEl.getBoundingClientRect();return[(c[0].pageX+(c[1].pageX-c[0].pageX)/2-e.x-s.scrollX)/l,(c[0].pageY+(c[1].pageY-c[0].pageY)/2-e.y-s.scrollY)/l]}();d.originX=e,d.originY=t,d.imageEl.style.transitionDuration="0ms"}m=!0}}function X(e){if(!f(e))return;const i=t.params.zoom,a=t.zoom,r=c.findIndex((t=>t.pointerId===e.pointerId));r>=0&&(c[r]=e),c.length<2||(n=!0,d.scaleMove=E(),d.imageEl&&(a.scale=d.scaleMove/d.scaleStart*l,a.scale>d.maxRatio&&(a.scale=d.maxRatio-1+(a.scale-d.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));r>=0&&c.splice(r,1),o&&n&&(o=!1,n=!1,d.imageEl&&(a.scale=Math.max(Math.min(a.scale,d.maxRatio),i.minRatio),d.imageEl.style.transitionDuration=`${t.params.speed}ms`,d.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,l=a.scale,m=!1,a.scale>1&&d.slideEl?d.slideEl.classList.add(`${i.zoomedSlideClass}`):a.scale<=1&&d.slideEl&&d.slideEl.classList.remove(`${i.zoomedSlideClass}`),1===a.scale&&(d.originX=0,d.originY=0,d.slideEl=void 0)))}function y(){t.touchEventsData.preventTouchMoveFromPointerMove=!1}function z(e){if(!f(e)||!function(e){const i=`.${t.params.zoom.containerClass}`;return!!e.target.matches(i)||[...t.hostEl.querySelectorAll(i)].filter((t=>t.contains(e.target))).length>0}(e))return;const i=t.zoom;if(!d.imageEl)return;if(!u.isTouched||!d.slideEl)return;u.isMoved||(u.width=d.imageEl.offsetWidth||d.imageEl.clientWidth,u.height=d.imageEl.offsetHeight||d.imageEl.clientHeight,u.startX=getTranslate(d.imageWrapEl,"x")||0,u.startY=getTranslate(d.imageWrapEl,"y")||0,d.slideWidth=d.slideEl.offsetWidth,d.slideHeight=d.slideEl.offsetHeight,d.imageWrapEl.style.transitionDuration="0ms");const a=u.width*i.scale,r=u.height*i.scale;u.minX=Math.min(d.slideWidth/2-a/2,0),u.maxX=-u.minX,u.minY=Math.min(d.slideHeight/2-r/2,0),u.maxY=-u.minY,u.touchesCurrent.x=c.length>0?c[0].pageX:e.pageX,u.touchesCurrent.y=c.length>0?c[0].pageY:e.pageY;if(Math.max(Math.abs(u.touchesCurrent.x-u.touchesStart.x),Math.abs(u.touchesCurrent.y-u.touchesStart.y))>5&&(t.allowClick=!1),!u.isMoved&&!m){if(t.isHorizontal()&&(Math.floor(u.minX)===Math.floor(u.startX)&&u.touchesCurrent.xu.touchesStart.x))return u.isTouched=!1,void y();if(!t.isHorizontal()&&(Math.floor(u.minY)===Math.floor(u.startY)&&u.touchesCurrent.yu.touchesStart.y))return u.isTouched=!1,void y()}e.cancelable&&e.preventDefault(),e.stopPropagation(),clearTimeout(g),t.touchEventsData.preventTouchMoveFromPointerMove=!0,g=setTimeout((()=>{y()})),u.isMoved=!0;const s=(i.scale-l)/(d.maxRatio-t.params.zoom.minRatio),{originX:o,originY:n}=d;u.currentX=u.touchesCurrent.x-u.touchesStart.x+u.startX+s*(u.width-2*o),u.currentY=u.touchesCurrent.y-u.touchesStart.y+u.startY+s*(u.height-2*n),u.currentXu.maxX&&(u.currentX=u.maxX-1+(u.currentX-u.maxX+1)**.8),u.currentYu.maxY&&(u.currentY=u.maxY-1+(u.currentY-u.maxY+1)**.8),p.prevPositionX||(p.prevPositionX=u.touchesCurrent.x),p.prevPositionY||(p.prevPositionY=u.touchesCurrent.y),p.prevTime||(p.prevTime=Date.now()),p.x=(u.touchesCurrent.x-p.prevPositionX)/(Date.now()-p.prevTime)/2,p.y=(u.touchesCurrent.y-p.prevPositionY)/(Date.now()-p.prevTime)/2,Math.abs(u.touchesCurrent.x-p.prevPositionX)<2&&(p.x=0),Math.abs(u.touchesCurrent.y-p.prevPositionY)<2&&(p.y=0),p.prevPositionX=u.touchesCurrent.x,p.prevPositionY=u.touchesCurrent.y,p.prevTime=Date.now(),d.imageWrapEl.style.transform=`translate3d(${u.currentX}px, ${u.currentY}px,0)`}function C(){const e=t.zoom;d.slideEl&&t.activeIndex!==t.slides.indexOf(d.slideEl)&&(d.imageEl&&(d.imageEl.style.transform="translate3d(0,0,0) scale(1)"),d.imageWrapEl&&(d.imageWrapEl.style.transform="translate3d(0,0,0)"),d.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,l=1,d.slideEl=void 0,d.imageEl=void 0,d.imageWrapEl=void 0,d.originX=0,d.originY=0)}function M(e){const i=t.zoom,a=t.params.zoom;if(!d.slideEl){e&&e.target&&(d.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),d.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?d.slideEl=elementChildren(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:d.slideEl=t.slides[t.activeIndex]);let i=d.slideEl.querySelector(`.${a.containerClass}`);i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=i,d.imageWrapEl=i?elementParents(d.imageEl,`.${a.containerClass}`)[0]:void 0}if(!d.imageEl||!d.imageWrapEl)return;let r,o,n,m,c,p,g,h,E,f,x,X,Y,y,z,C,M,w;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),d.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===u.touchesStart.x&&e?(r=e.pageX,o=e.pageY):(r=u.touchesStart.x,o=u.touchesStart.y);const W="number"==typeof e?e:null;1===l&&W&&(r=void 0,o=void 0);const b=v();i.scale=W||b,l=W||b,!e||1===l&&W?(g=0,h=0):(M=d.slideEl.offsetWidth,w=d.slideEl.offsetHeight,n=elementOffset(d.slideEl).left+s.scrollX,m=elementOffset(d.slideEl).top+s.scrollY,c=n+M/2-r,p=m+w/2-o,E=d.imageEl.offsetWidth||d.imageEl.clientWidth,f=d.imageEl.offsetHeight||d.imageEl.clientHeight,x=E*i.scale,X=f*i.scale,Y=Math.min(M/2-x/2,0),y=Math.min(w/2-X/2,0),z=-Y,C=-y,g=c*i.scale,h=p*i.scale,gz&&(g=z),hC&&(h=C)),W&&1===i.scale&&(d.originX=0,d.originY=0),d.imageWrapEl.style.transitionDuration="300ms",d.imageWrapEl.style.transform=`translate3d(${g}px, ${h}px,0)`,d.imageEl.style.transitionDuration="300ms",d.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`}function w(){const e=t.zoom,i=t.params.zoom;if(!d.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?d.slideEl=elementChildren(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:d.slideEl=t.slides[t.activeIndex];let e=d.slideEl.querySelector(`.${i.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=e,d.imageWrapEl=e?elementParents(d.imageEl,`.${i.containerClass}`)[0]:void 0}d.imageEl&&d.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,l=1,d.imageWrapEl.style.transitionDuration="300ms",d.imageWrapEl.style.transform="translate3d(0,0,0)",d.imageEl.style.transitionDuration="300ms",d.imageEl.style.transform="translate3d(0,0,0) scale(1)",d.slideEl.classList.remove(`${i.zoomedSlideClass}`),d.slideEl=void 0,d.originX=0,d.originY=0)}function W(e){const i=t.zoom;i.scale&&1!==i.scale?w():M(e)}function b(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function S(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:i,activeListenerWithCapture:a}=b();t.wrapperEl.addEventListener("pointerdown",x,i),t.wrapperEl.addEventListener("pointermove",X,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,Y,i)})),t.wrapperEl.addEventListener("pointermove",z,a)}function $(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:i,activeListenerWithCapture:a}=b();t.wrapperEl.removeEventListener("pointerdown",x,i),t.wrapperEl.removeEventListener("pointermove",X,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,Y,i)})),t.wrapperEl.removeEventListener("pointermove",z,a)}Object.defineProperty(t.zoom,"scale",{get:()=>h,set(e){if(h!==e){const t=d.imageEl,i=d.slideEl;r("zoomChange",e,t,i)}h=e}}),a("init",(()=>{t.params.zoom.enabled&&S()})),a("destroy",(()=>{$()})),a("touchStart",((e,i)=>{t.zoom.enabled&&function(e){const i=t.device;if(!d.imageEl)return;if(u.isTouched)return;i.android&&e.cancelable&&e.preventDefault(),u.isTouched=!0;const a=c.length>0?c[0]:e;u.touchesStart.x=a.pageX,u.touchesStart.y=a.pageY}(i)})),a("touchEnd",((e,i)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!d.imageEl)return;if(!u.isTouched||!u.isMoved)return u.isTouched=!1,void(u.isMoved=!1);u.isTouched=!1,u.isMoved=!1;let i=300,a=300;const r=p.x*i,s=u.currentX+r,o=p.y*a,n=u.currentY+o;0!==p.x&&(i=Math.abs((s-u.currentX)/p.x)),0!==p.y&&(a=Math.abs((n-u.currentY)/p.y));const l=Math.max(i,a);u.currentX=s,u.currentY=n;const m=u.width*e.scale,c=u.height*e.scale;u.minX=Math.min(d.slideWidth/2-m/2,0),u.maxX=-u.minX,u.minY=Math.min(d.slideHeight/2-c/2,0),u.maxY=-u.minY,u.currentX=Math.max(Math.min(u.currentX,u.maxX),u.minX),u.currentY=Math.max(Math.min(u.currentY,u.maxY),u.minY),d.imageWrapEl.style.transitionDuration=`${l}ms`,d.imageWrapEl.style.transform=`translate3d(${u.currentX}px, ${u.currentY}px,0)`}()})),a("doubleTap",((e,i)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&W(i)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:S,disable:$,in:M,out:w,toggle:W})}export{Zoom as default}; +//# sourceMappingURL=zoom.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/zoom.min.mjs.map b/source/vendor/swiper-bundle/modules/zoom.min.mjs.map new file mode 100644 index 0000000..9a01b29 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/zoom.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"zoom.mjs.mjs","names":["getWindow","elementChildren","elementParents","elementOffset","getTranslate","Zoom","_ref","swiper","extendParams","on","emit","window","zoom","enabled","limitToOriginalSize","maxRatio","minRatio","toggle","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideEl","undefined","slideWidth","slideHeight","imageEl","imageWrapEl","image","isTouched","isMoved","currentX","currentY","minX","minY","maxX","maxY","width","height","startX","startY","touchesStart","touchesCurrent","velocity","x","y","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","scale","getDistanceBetweenTouches","length","x1","pageX","y1","pageY","x2","y2","Math","sqrt","getMaxRatio","params","getAttribute","naturalWidth","imageMaxRatio","offsetWidth","min","eventWithinSlide","e","slideSelector","isElement","slideClass","target","matches","slides","filter","contains","onGestureStart","pointerType","splice","push","scaleStart","closest","activeIndex","querySelector","querySelectorAll","box","getBoundingClientRect","scrollX","scrollY","getScaleOrigin","style","transitionDuration","onGestureChange","pointerIndex","findIndex","cachedEv","pointerId","scaleMove","transform","onGestureEnd","type","max","speed","classList","add","remove","allowTouchMove","touchEventsData","preventTouchMoveFromPointerMove","onTouchMove","selector","hostEl","containerEl","eventWithinZoomContainer","clientWidth","offsetHeight","clientHeight","scaledWidth","scaledHeight","abs","allowClick","isHorizontal","floor","cancelable","preventDefault","stopPropagation","clearTimeout","setTimeout","scaleRatio","Date","now","onTransitionEnd","indexOf","zoomIn","virtual","slidesEl","slideActiveClass","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","cssMode","wrapperEl","overflow","touchAction","forceZoomRatio","left","top","zoomOut","zoomToggle","getListeners","passiveListener","passiveListeners","passive","capture","activeListenerWithCapture","enable","addEventListener","forEach","eventName","disable","removeEventListener","Object","defineProperty","get","set","value","_s","device","android","event","onTouchStart","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTouchEnd","animating","assign","in","out"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/modules/zoom.mjs b/source/vendor/swiper-bundle/modules/zoom.mjs new file mode 100644 index 0000000..6e19ee7 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/zoom.mjs @@ -0,0 +1,621 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs'; + +function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + let allowTouchMoveTimeout; + function allowTouchMove() { + swiper.touchEventsData.preventTouchMoveFromPointerMove = false; + } + function preventTouchMove() { + clearTimeout(allowTouchMoveTimeout); + swiper.touchEventsData.preventTouchMoveFromPointerMove = true; + allowTouchMoveTimeout = setTimeout(() => { + allowTouchMove(); + }); + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { + return; + } + const zoom = swiper.zoom; + if (!gesture.imageEl) { + return; + } + if (!image.isTouched || !gesture.slideEl) { + return; + } + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + allowTouchMove(); + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + allowTouchMove(); + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + preventTouchMove(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); +} + +export { Zoom as default }; diff --git a/source/vendor/swiper-bundle/modules/zoom.scss b/source/vendor/swiper-bundle/modules/zoom.scss new file mode 100644 index 0000000..1f56449 --- /dev/null +++ b/source/vendor/swiper-bundle/modules/zoom.scss @@ -0,0 +1,21 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/source/vendor/swiper-bundle/package.json b/source/vendor/swiper-bundle/package.json new file mode 100644 index 0000000..6354ba0 --- /dev/null +++ b/source/vendor/swiper-bundle/package.json @@ -0,0 +1,212 @@ +{ + "name": "swiper", + "version": "11.1.7", + "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", + "typings": "swiper.d.ts", + "type": "module", + "main": "./swiper.mjs", + "module": "./swiper.mjs", + "exports": { + ".": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./effect-utils": { + "types": "./swiper-effect-utils.d.ts", + "default": "./swiper-effect-utils.mjs" + }, + "./core": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./bundle": { + "types": "./swiper.d.ts", + "default": "./swiper-bundle.mjs" + }, + "./css": "./swiper.css", + "./css/bundle": "./swiper-bundle.css", + "./swiper-bundle.css": "./swiper-bundle.css", + "./css/a11y": "./modules/a11y.css", + "./css/autoplay": "./modules/autoplay.css", + "./css/controller": "./modules/controller.css", + "./css/effect-coverflow": "./modules/effect-coverflow.css", + "./css/effect-cube": "./modules/effect-cube.css", + "./css/effect-fade": "./modules/effect-fade.css", + "./css/effect-flip": "./modules/effect-flip.css", + "./css/effect-creative": "./modules/effect-creative.css", + "./css/effect-cards": "./modules/effect-cards.css", + "./css/free-mode": "./modules/free-mode.css", + "./css/grid": "./modules/grid.css", + "./css/hash-navigation": "./modules/hash-navigation.css", + "./css/history": "./modules/history.css", + "./css/keyboard": "./modules/keyboard.css", + "./css/manipulation": "./modules/manipulation.css", + "./css/mousewheel": "./modules/mousewheel.css", + "./css/navigation": "./modules/navigation.css", + "./css/pagination": "./modules/pagination.css", + "./css/parallax": "./modules/parallax.css", + "./css/scrollbar": "./modules/scrollbar.css", + "./css/thumbs": "./modules/thumbs.css", + "./css/virtual": "./modules/virtual.css", + "./css/zoom": "./modules/zoom.css", + "./less": "./swiper.less", + "./less/a11y": "./modules/a11y.less", + "./less/autoplay": "./modules/autoplay.less", + "./less/controller": "./modules/controller.less", + "./less/effect-coverflow": "./modules/effect-coverflow.less", + "./less/effect-cube": "./modules/effect-cube.less", + "./less/effect-fade": "./modules/effect-fade.less", + "./less/effect-flip": "./modules/effect-flip.less", + "./less/effect-creative": "./modules/effect-creative.less", + "./less/effect-cards": "./modules/effect-cards.less", + "./less/free-mode": "./modules/free-mode.less", + "./less/grid": "./modules/grid.less", + "./less/hash-navigation": "./modules/hash-navigation.less", + "./less/history": "./modules/history.less", + "./less/keyboard": "./modules/keyboard.less", + "./less/manipulation": "./modules/manipulation.less", + "./less/mousewheel": "./modules/mousewheel.less", + "./less/navigation": "./modules/navigation.less", + "./less/pagination": "./modules/pagination.less", + "./less/parallax": "./modules/parallax.less", + "./less/scrollbar": "./modules/scrollbar.less", + "./less/thumbs": "./modules/thumbs.less", + "./less/virtual": "./modules/virtual.less", + "./less/zoom": "./modules/zoom.less", + "./scss": "./swiper.scss", + "./scss/a11y": "./modules/a11y.scss", + "./scss/autoplay": "./modules/autoplay.scss", + "./scss/controller": "./modules/controller.scss", + "./scss/effect-coverflow": "./modules/effect-coverflow.scss", + "./scss/effect-cube": "./modules/effect-cube.scss", + "./scss/effect-fade": "./modules/effect-fade.scss", + "./scss/effect-flip": "./modules/effect-flip.scss", + "./scss/effect-creative": "./modules/effect-creative.scss", + "./scss/effect-cards": "./modules/effect-cards.scss", + "./scss/free-mode": "./modules/free-mode.scss", + "./scss/grid": "./modules/grid.scss", + "./scss/hash-navigation": "./modules/hash-navigation.scss", + "./scss/history": "./modules/history.scss", + "./scss/keyboard": "./modules/keyboard.scss", + "./scss/manipulation": "./modules/manipulation.scss", + "./scss/mousewheel": "./modules/mousewheel.scss", + "./scss/navigation": "./modules/navigation.scss", + "./scss/pagination": "./modules/pagination.scss", + "./scss/parallax": "./modules/parallax.scss", + "./scss/scrollbar": "./modules/scrollbar.scss", + "./scss/thumbs": "./modules/thumbs.scss", + "./scss/virtual": "./modules/virtual.scss", + "./scss/zoom": "./modules/zoom.scss", + "./element": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element.mjs" + }, + "./element/bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element-bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element/css/a11y": "./modules/a11y-element.css", + "./element/css/autoplay": "./modules/autoplay-element.css", + "./element/css/controller": "./modules/controller-element.css", + "./element/css/effect-coverflow": "./modules/effect-coverflow-element.css", + "./element/css/effect-cube": "./modules/effect-cube-element.css", + "./element/css/effect-fade": "./modules/effect-fade-element.css", + "./element/css/effect-flip": "./modules/effect-flip-element.css", + "./element/css/effect-creative": "./modules/effect-creative-element.css", + "./element/css/effect-cards": "./modules/effect-cards-element.css", + "./element/css/free-mode": "./modules/free-mode-element.css", + "./element/css/grid": "./modules/grid-element.css", + "./element/css/hash-navigation": "./modules/hash-navigation-element.css", + "./element/css/history": "./modules/history-element.css", + "./element/css/keyboard": "./modules/keyboard-element.css", + "./element/css/manipulation": "./modules/manipulation-element.css", + "./element/css/mousewheel": "./modules/mousewheel-element.css", + "./element/css/navigation": "./modules/navigation-element.css", + "./element/css/pagination": "./modules/pagination-element.css", + "./element/css/parallax": "./modules/parallax-element.css", + "./element/css/scrollbar": "./modules/scrollbar-element.css", + "./element/css/thumbs": "./modules/thumbs-element.css", + "./element/css/virtual": "./modules/virtual-element.css", + "./element/css/zoom": "./modules/zoom-element.css", + "./react": { + "types": "./swiper-react.d.ts", + "default": "./swiper-react.mjs" + }, + "./vue": { + "types": "./swiper-vue.d.ts", + "default": "./swiper-vue.mjs" + }, + "./modules": { + "types": "./types/modules/index.d.ts", + "default": "./modules/index.mjs" + }, + "./types": "./types/index.d.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "modules": [ + "./types/modules/index.d.ts" + ], + "element": [ + "./swiper-element.d.ts" + ], + "element/bundle": [ + "./swiper-element.d.ts" + ], + "react": [ + "./swiper-react.d.ts" + ], + "vue": [ + "./swiper-vue.d.ts" + ] + } + }, + "repository": { + "type": "git", + "url": "https://github.com/nolimits4web/Swiper.git" + }, + "keywords": [ + "swiper", + "swipe", + "slider", + "touch", + "ios", + "mobile", + "cordova", + "phonegap", + "app", + "framework", + "framework7", + "carousel", + "gallery", + "plugin", + "react", + "vue", + "slideshow" + ], + "author": "Vladimir Kharlampidi", + "license": "MIT", + "bugs": { + "url": "https://github.com/nolimits4web/swiper/issues" + }, + "homepage": "https://swiperjs.com", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + }, + "releaseDate": "July 24, 2024" +} diff --git a/source/vendor/swiper-bundle/shared/classes-to-selector.min.mjs b/source/vendor/swiper-bundle/shared/classes-to-selector.min.mjs new file mode 100644 index 0000000..f177f5b --- /dev/null +++ b/source/vendor/swiper-bundle/shared/classes-to-selector.min.mjs @@ -0,0 +1,2 @@ +function classesToSelector(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}export{classesToSelector as c}; +//# sourceMappingURL=classes-to-selector.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/classes-to-selector.min.mjs.map b/source/vendor/swiper-bundle/shared/classes-to-selector.min.mjs.map new file mode 100644 index 0000000..d817369 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/classes-to-selector.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"classes-to-selector.mjs.mjs","names":["classesToSelector","classes","trim","replace"],"sources":["0"],"mappings":"AAAA,SAASA,kBAAkBC,GAIzB,YAHgB,IAAZA,IACFA,EAAU,IAEL,IAAIA,EAAQC,OAAOC,QAAQ,eAAgB,QACjDA,QAAQ,KAAM,MACjB,QAESH"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/classes-to-selector.mjs b/source/vendor/swiper-bundle/shared/classes-to-selector.mjs new file mode 100644 index 0000000..dd142d5 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/classes-to-selector.mjs @@ -0,0 +1,9 @@ +function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; +} + +export { classesToSelector as c }; diff --git a/source/vendor/swiper-bundle/shared/create-element-if-not-defined.min.mjs b/source/vendor/swiper-bundle/shared/create-element-if-not-defined.min.mjs new file mode 100644 index 0000000..f92d40d --- /dev/null +++ b/source/vendor/swiper-bundle/shared/create-element-if-not-defined.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren,c as createElement}from"./utils.min.mjs";function createElementIfNotDefined(e,t,n,a){return e.params.createElements&&Object.keys(a).forEach((l=>{if(!n[l]&&!0===n.auto){let r=elementChildren(e.el,`.${a[l]}`)[0];r||(r=createElement("div",a[l]),r.className=a[l],e.el.append(r)),n[l]=r,t[l]=r}})),n}export{createElementIfNotDefined as c}; +//# sourceMappingURL=create-element-if-not-defined.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/create-element-if-not-defined.min.mjs.map b/source/vendor/swiper-bundle/shared/create-element-if-not-defined.min.mjs.map new file mode 100644 index 0000000..85a319b --- /dev/null +++ b/source/vendor/swiper-bundle/shared/create-element-if-not-defined.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-element-if-not-defined.mjs.mjs","names":["elementChildren","createElement","createElementIfNotDefined","swiper","originalParams","params","checkProps","createElements","Object","keys","forEach","key","auto","element","el","className","append"],"sources":["0"],"mappings":"YAAcA,qBAAsBC,kBAAqB,kBAEzD,SAASC,0BAA0BC,EAAQC,EAAgBC,EAAQC,GAejE,OAdIH,EAAOE,OAAOE,gBAChBC,OAAOC,KAAKH,GAAYI,SAAQC,IAC9B,IAAKN,EAAOM,KAAwB,IAAhBN,EAAOO,KAAe,CACxC,IAAIC,EAAUb,gBAAgBG,EAAOW,GAAI,IAAIR,EAAWK,MAAQ,GAC3DE,IACHA,EAAUZ,cAAc,MAAOK,EAAWK,IAC1CE,EAAQE,UAAYT,EAAWK,GAC/BR,EAAOW,GAAGE,OAAOH,IAEnBR,EAAOM,GAAOE,EACdT,EAAeO,GAAOE,CACxB,KAGGR,CACT,QAESH"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/create-element-if-not-defined.mjs b/source/vendor/swiper-bundle/shared/create-element-if-not-defined.mjs new file mode 100644 index 0000000..10b283f --- /dev/null +++ b/source/vendor/swiper-bundle/shared/create-element-if-not-defined.mjs @@ -0,0 +1,21 @@ +import { e as elementChildren, c as createElement } from './utils.mjs'; + +function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; +} + +export { createElementIfNotDefined as c }; diff --git a/source/vendor/swiper-bundle/shared/create-shadow.min.mjs b/source/vendor/swiper-bundle/shared/create-shadow.min.mjs new file mode 100644 index 0000000..ee6b7a7 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/create-shadow.min.mjs @@ -0,0 +1,2 @@ +import{g as getSlideTransformEl,c as createElement}from"./utils.min.mjs";function createShadow(e,t,r){const s=`swiper-slide-shadow${r?`-${r}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=getSlideTransformEl(t);let i=a.querySelector(`.${s.split(" ").join(".")}`);return i||(i=createElement("div",s.split(" ")),a.append(i)),i}export{createShadow as c}; +//# sourceMappingURL=create-shadow.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/create-shadow.min.mjs.map b/source/vendor/swiper-bundle/shared/create-shadow.min.mjs.map new file mode 100644 index 0000000..4505556 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/create-shadow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-shadow.mjs.mjs","names":["getSlideTransformEl","createElement","createShadow","suffix","slideEl","side","shadowClass","shadowContainer","shadowEl","querySelector","split","join","append"],"sources":["0"],"mappings":"YAAcA,yBAA0BC,kBAAqB,kBAE7D,SAASC,aAAaC,EAAQC,EAASC,GACrC,MAAMC,EAAc,sBAAsBD,EAAO,IAAIA,IAAS,KAAKF,EAAS,wBAAwBA,IAAW,KACzGI,EAAkBP,oBAAoBI,GAC5C,IAAII,EAAWD,EAAgBE,cAAc,IAAIH,EAAYI,MAAM,KAAKC,KAAK,QAK7E,OAJKH,IACHA,EAAWP,cAAc,MAAOK,EAAYI,MAAM,MAClDH,EAAgBK,OAAOJ,IAElBA,CACT,QAESN"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/create-shadow.mjs b/source/vendor/swiper-bundle/shared/create-shadow.mjs new file mode 100644 index 0000000..2767e70 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/create-shadow.mjs @@ -0,0 +1,14 @@ +import { g as getSlideTransformEl, c as createElement } from './utils.mjs'; + +function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; +} + +export { createShadow as c }; diff --git a/source/vendor/swiper-bundle/shared/effect-init.min.mjs b/source/vendor/swiper-bundle/shared/effect-init.min.mjs new file mode 100644 index 0000000..feed86e --- /dev/null +++ b/source/vendor/swiper-bundle/shared/effect-init.min.mjs @@ -0,0 +1,2 @@ +function effectInit(e){const{effect:s,swiper:a,on:t,setTranslate:r,setTransition:i,overwriteParams:n,perspective:o,recreateShadows:f,getEffectParams:l}=e;let c;t("beforeInit",(()=>{if(a.params.effect!==s)return;a.classNames.push(`${a.params.containerModifierClass}${s}`),o&&o()&&a.classNames.push(`${a.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(a.params,e),Object.assign(a.originalParams,e)})),t("setTranslate",(()=>{a.params.effect===s&&r()})),t("setTransition",((e,t)=>{a.params.effect===s&&i(t)})),t("transitionEnd",(()=>{if(a.params.effect===s&&f){if(!l||!l().slideShadows)return;a.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),f()}})),t("virtualUpdate",(()=>{a.params.effect===s&&(a.slides.length||(c=!0),requestAnimationFrame((()=>{c&&a.slides&&a.slides.length&&(r(),c=!1)})))}))}export{effectInit as e}; +//# sourceMappingURL=effect-init.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/effect-init.min.mjs.map b/source/vendor/swiper-bundle/shared/effect-init.min.mjs.map new file mode 100644 index 0000000..7250e5b --- /dev/null +++ b/source/vendor/swiper-bundle/shared/effect-init.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-init.mjs.mjs","names":["effectInit","params","effect","swiper","on","setTranslate","setTransition","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","classNames","push","containerModifierClass","overwriteParamsResult","Object","assign","originalParams","_s","duration","slideShadows","slides","forEach","slideEl","querySelectorAll","shadowEl","remove","length","requestAnimationFrame"],"sources":["0"],"mappings":"AAAA,SAASA,WAAWC,GAClB,MAAMC,OACJA,EAAMC,OACNA,EAAMC,GACNA,EAAEC,aACFA,EAAYC,cACZA,EAAaC,gBACbA,EAAeC,YACfA,EAAWC,gBACXA,EAAeC,gBACfA,GACET,EA+BJ,IAAIU,EA9BJP,EAAG,cAAc,KACf,GAAID,EAAOF,OAAOC,SAAWA,EAAQ,OACrCC,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,yBAAyBZ,KAC7DM,GAAeA,KACjBL,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,4BAE1C,MAAMC,EAAwBR,EAAkBA,IAAoB,CAAC,EACrES,OAAOC,OAAOd,EAAOF,OAAQc,GAC7BC,OAAOC,OAAOd,EAAOe,eAAgBH,EAAsB,IAE7DX,EAAG,gBAAgB,KACbD,EAAOF,OAAOC,SAAWA,GAC7BG,GAAc,IAEhBD,EAAG,iBAAiB,CAACe,EAAIC,KACnBjB,EAAOF,OAAOC,SAAWA,GAC7BI,EAAcc,EAAS,IAEzBhB,EAAG,iBAAiB,KAClB,GAAID,EAAOF,OAAOC,SAAWA,GACzBO,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBW,aAAc,OAEzDlB,EAAOmB,OAAOC,SAAQC,IACpBA,EAAQC,iBAAiB,gHAAgHF,SAAQG,GAAYA,EAASC,UAAS,IAGjLlB,GACF,KAGFL,EAAG,iBAAiB,KACdD,EAAOF,OAAOC,SAAWA,IACxBC,EAAOmB,OAAOM,SACjBjB,GAAyB,GAE3BkB,uBAAsB,KAChBlB,GAA0BR,EAAOmB,QAAUnB,EAAOmB,OAAOM,SAC3DvB,IACAM,GAAyB,EAC3B,IACA,GAEN,QAESX"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/effect-init.mjs b/source/vendor/swiper-bundle/shared/effect-init.mjs new file mode 100644 index 0000000..d418687 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/effect-init.mjs @@ -0,0 +1,58 @@ +function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); +} + +export { effectInit as e }; diff --git a/source/vendor/swiper-bundle/shared/effect-target.min.mjs b/source/vendor/swiper-bundle/shared/effect-target.min.mjs new file mode 100644 index 0000000..9829053 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/effect-target.min.mjs @@ -0,0 +1,2 @@ +import{g as getSlideTransformEl}from"./utils.min.mjs";function effectTarget(e,i){const t=getSlideTransformEl(i);return t!==i&&(t.style.backfaceVisibility="hidden",t.style["-webkit-backface-visibility"]="hidden"),t}export{effectTarget as e}; +//# sourceMappingURL=effect-target.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/effect-target.min.mjs.map b/source/vendor/swiper-bundle/shared/effect-target.min.mjs.map new file mode 100644 index 0000000..9d0c540 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/effect-target.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-target.mjs.mjs","names":["getSlideTransformEl","effectTarget","effectParams","slideEl","transformEl","style","backfaceVisibility"],"sources":["0"],"mappings":"YAAcA,wBAA2B,kBAEzC,SAASC,aAAaC,EAAcC,GAClC,MAAMC,EAAcJ,oBAAoBG,GAKxC,OAJIC,IAAgBD,IAClBC,EAAYC,MAAMC,mBAAqB,SACvCF,EAAYC,MAAM,+BAAiC,UAE9CD,CACT,QAESH"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/effect-target.mjs b/source/vendor/swiper-bundle/shared/effect-target.mjs new file mode 100644 index 0000000..b1a7b3b --- /dev/null +++ b/source/vendor/swiper-bundle/shared/effect-target.mjs @@ -0,0 +1,12 @@ +import { g as getSlideTransformEl } from './utils.mjs'; + +function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; +} + +export { effectTarget as e }; diff --git a/source/vendor/swiper-bundle/shared/effect-virtual-transition-end.min.mjs b/source/vendor/swiper-bundle/shared/effect-virtual-transition-end.min.mjs new file mode 100644 index 0000000..6071178 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/effect-virtual-transition-end.min.mjs @@ -0,0 +1,2 @@ +import{k as elementTransitionEnd}from"./utils.min.mjs";function effectVirtualTransitionEnd(e){let{swiper:t,duration:n,transformElements:r,allSlides:i}=e;const{activeIndex:a}=t;if(t.params.virtualTranslate&&0!==n){let e,n=!1;e=i?r:r.filter((e=>{const n=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(n)===a})),e.forEach((e=>{elementTransitionEnd(e,(()=>{if(n)return;if(!t||t.destroyed)return;n=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}export{effectVirtualTransitionEnd as e}; +//# sourceMappingURL=effect-virtual-transition-end.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/effect-virtual-transition-end.min.mjs.map b/source/vendor/swiper-bundle/shared/effect-virtual-transition-end.min.mjs.map new file mode 100644 index 0000000..da4e095 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/effect-virtual-transition-end.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-virtual-transition-end.mjs.mjs","names":["elementTransitionEnd","effectVirtualTransitionEnd","_ref","swiper","duration","transformElements","allSlides","activeIndex","params","virtualTranslate","transitionEndTarget","eventTriggered","filter","transformEl","el","classList","contains","parentElement","slides","slideEl","shadowRoot","parentNode","getSlide","getSlideIndex","forEach","destroyed","animating","evt","window","CustomEvent","bubbles","cancelable","wrapperEl","dispatchEvent"],"sources":["0"],"mappings":"YAAcA,yBAA4B,kBAE1C,SAASC,2BAA2BC,GAClC,IAAIC,OACFA,EAAMC,SACNA,EAAQC,kBACRA,EAAiBC,UACjBA,GACEJ,EACJ,MAAMK,YACJA,GACEJ,EASJ,GAAIA,EAAOK,OAAOC,kBAAiC,IAAbL,EAAgB,CACpD,IACIM,EADAC,GAAiB,EAGnBD,EADEJ,EACoBD,EAEAA,EAAkBO,QAAOC,IAC7C,MAAMC,EAAKD,EAAYE,UAAUC,SAAS,0BAf/BF,KACf,IAAKA,EAAGG,cAGN,OADcd,EAAOe,OAAON,QAAOO,GAAWA,EAAQC,YAAcD,EAAQC,aAAeN,EAAGO,aAAY,GAG5G,OAAOP,EAAGG,aAAa,EASmDK,CAAST,GAAeA,EAC9F,OAAOV,EAAOoB,cAAcT,KAAQP,CAAW,IAGnDG,EAAoBc,SAAQV,IAC1Bd,qBAAqBc,GAAI,KACvB,GAAIH,EAAgB,OACpB,IAAKR,GAAUA,EAAOsB,UAAW,OACjCd,GAAiB,EACjBR,EAAOuB,WAAY,EACnB,MAAMC,EAAM,IAAIC,OAAOC,YAAY,gBAAiB,CAClDC,SAAS,EACTC,YAAY,IAEd5B,EAAO6B,UAAUC,cAAcN,EAAI,GACnC,GAEN,CACF,QAES1B"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/effect-virtual-transition-end.mjs b/source/vendor/swiper-bundle/shared/effect-virtual-transition-end.mjs new file mode 100644 index 0000000..540615e --- /dev/null +++ b/source/vendor/swiper-bundle/shared/effect-virtual-transition-end.mjs @@ -0,0 +1,48 @@ +import { k as elementTransitionEnd } from './utils.mjs'; + +function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } +} + +export { effectVirtualTransitionEnd as e }; diff --git a/source/vendor/swiper-bundle/shared/get-element-params.min.mjs b/source/vendor/swiper-bundle/shared/get-element-params.min.mjs new file mode 100644 index 0000000..8a456d3 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/get-element-params.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,i as isObject,c as attrToProp,p as paramsList}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";const formatValue=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let a;try{a=JSON.parse(e)}catch(t){a=e}return a}return e}},modulesParamsList=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function getParams(e,a,t){const r={},n={};extend(r,defaults);const i=[...paramsList,"on"],o=i.map((e=>e.replace(/_/,"")));i.forEach((a=>{a=a.replace("_",""),void 0!==e[a]&&(n[a]=e[a])}));const s=[...e.attributes];return"string"==typeof a&&void 0!==t&&s.push({name:a,value:isObject(t)?{...t}:t}),s.forEach((e=>{const a=modulesParamsList.filter((a=>0===e.name.indexOf(`${a}-`)))[0];if(a){const t=attrToProp(a),r=attrToProp(e.name.split(`${a}-`)[1]);void 0===n[t]&&(n[t]={}),!0===n[t]&&(n[t]={enabled:!0}),n[t][r]=formatValue(e.value)}else{const a=attrToProp(e.name);if(!o.includes(a))return;const t=formatValue(e.value);n[a]&&modulesParamsList.includes(e.name)&&!isObject(t)?(n[a].constructor!==Object&&(n[a]={}),n[a].enabled=!!t):n[a]=t}})),extend(r,n),r.navigation?r.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==r.navigation?r.navigation:{}}:!1===r.navigation&&delete r.navigation,r.scrollbar?r.scrollbar={el:".swiper-scrollbar",...!0!==r.scrollbar?r.scrollbar:{}}:!1===r.scrollbar&&delete r.scrollbar,r.pagination?r.pagination={el:".swiper-pagination",...!0!==r.pagination?r.pagination:{}}:!1===r.pagination&&delete r.pagination,{params:r,passedParams:n}}export{getParams as g}; +//# sourceMappingURL=get-element-params.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/get-element-params.min.mjs.map b/source/vendor/swiper-bundle/shared/get-element-params.min.mjs.map new file mode 100644 index 0000000..883b699 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/get-element-params.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"get-element-params.mjs.mjs","names":["extend","isObject","attrToProp","paramsList","defaults","formatValue","val","parseFloat","Number","includes","v","JSON","parse","err","modulesParamsList","getParams","element","propName","propValue","params","passedParams","localParamsList","allowedParams","map","key","replace","forEach","paramName","attrsList","attributes","push","name","value","attr","moduleParam","filter","mParam","indexOf","parentObjName","subObjName","split","enabled","constructor","Object","navigation","prevEl","nextEl","scrollbar","el","pagination"],"sources":["0"],"mappings":"YAAcA,YAAaC,cAAeC,gBAAiBC,eAAkB,sCAC/DC,aAAgB,wBAE9B,MAAMC,YAAcC,IAClB,GAAIC,WAAWD,KAASE,OAAOF,GAAM,OAAOE,OAAOF,GACnD,GAAY,SAARA,EAAgB,OAAO,EAC3B,GAAY,KAARA,EAAY,OAAO,EACvB,GAAY,UAARA,EAAiB,OAAO,EAC5B,GAAY,SAARA,EAAgB,OAAO,KAC3B,GAAY,cAARA,EAAJ,CACA,GAAmB,iBAARA,GAAoBA,EAAIG,SAAS,MAAQH,EAAIG,SAAS,MAAQH,EAAIG,SAAS,KAAM,CAC1F,IAAIC,EACJ,IACEA,EAAIC,KAAKC,MAAMN,EACjB,CAAE,MAAOO,GACPH,EAAIJ,CACN,CACA,OAAOI,CACT,CACA,OAAOJ,CAVkC,CAU/B,EAENQ,kBAAoB,CAAC,OAAQ,WAAY,aAAc,eAAgB,mBAAoB,kBAAmB,cAAe,cAAe,cAAe,YAAa,OAAQ,kBAAmB,UAAW,WAAY,aAAc,aAAc,aAAc,WAAY,YAAa,SAAU,UAAW,QACxT,SAASC,UAAUC,EAASC,EAAUC,GACpC,MAAMC,EAAS,CAAC,EACVC,EAAe,CAAC,EACtBpB,OAAOmB,EAAQf,UACf,MAAMiB,EAAkB,IAAIlB,WAAY,MAClCmB,EAAgBD,EAAgBE,KAAIC,GAAOA,EAAIC,QAAQ,IAAK,MAGlEJ,EAAgBK,SAAQC,IACtBA,EAAYA,EAAUF,QAAQ,IAAK,SACD,IAAvBT,EAAQW,KACjBP,EAAaO,GAAaX,EAAQW,GACpC,IAIF,MAAMC,EAAY,IAAIZ,EAAQa,YA6D9B,MA5DwB,iBAAbZ,QAA8C,IAAdC,GACzCU,EAAUE,KAAK,CACbC,KAAMd,EACNe,MAAO/B,SAASiB,GAAa,IACxBA,GACDA,IAGRU,EAAUF,SAAQO,IAChB,MAAMC,EAAcpB,kBAAkBqB,QAAOC,GAA8C,IAApCH,EAAKF,KAAKM,QAAQ,GAAGD,QAAkB,GAC9F,GAAIF,EAAa,CACf,MAAMI,EAAgBpC,WAAWgC,GAC3BK,EAAarC,WAAW+B,EAAKF,KAAKS,MAAM,GAAGN,MAAgB,SACtB,IAAhCd,EAAakB,KAAgClB,EAAakB,GAAiB,CAAC,IACnD,IAAhClB,EAAakB,KACflB,EAAakB,GAAiB,CAC5BG,SAAS,IAGbrB,EAAakB,GAAeC,GAAclC,YAAY4B,EAAKD,MAC7D,KAAO,CACL,MAAMD,EAAO7B,WAAW+B,EAAKF,MAC7B,IAAKT,EAAcb,SAASsB,GAAO,OACnC,MAAMC,EAAQ3B,YAAY4B,EAAKD,OAC3BZ,EAAaW,IAASjB,kBAAkBL,SAASwB,EAAKF,QAAU9B,SAAS+B,IACvEZ,EAAaW,GAAMW,cAAgBC,SACrCvB,EAAaW,GAAQ,CAAC,GAExBX,EAAaW,GAAMU,UAAYT,GAE/BZ,EAAaW,GAAQC,CAEzB,KAEFhC,OAAOmB,EAAQC,GACXD,EAAOyB,WACTzB,EAAOyB,WAAa,CAClBC,OAAQ,sBACRC,OAAQ,0BACkB,IAAtB3B,EAAOyB,WAAsBzB,EAAOyB,WAAa,CAAC,IAEzB,IAAtBzB,EAAOyB,mBACTzB,EAAOyB,WAEZzB,EAAO4B,UACT5B,EAAO4B,UAAY,CACjBC,GAAI,wBACqB,IAArB7B,EAAO4B,UAAqB5B,EAAO4B,UAAY,CAAC,IAExB,IAArB5B,EAAO4B,kBACT5B,EAAO4B,UAEZ5B,EAAO8B,WACT9B,EAAO8B,WAAa,CAClBD,GAAI,yBACsB,IAAtB7B,EAAO8B,WAAsB9B,EAAO8B,WAAa,CAAC,IAEzB,IAAtB9B,EAAO8B,mBACT9B,EAAO8B,WAET,CACL9B,SACAC,eAEJ,QAESL"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/get-element-params.mjs b/source/vendor/swiper-bundle/shared/get-element-params.mjs new file mode 100644 index 0000000..eb00b03 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/get-element-params.mjs @@ -0,0 +1,106 @@ +import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; +}; +const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; +function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; +} + +export { getParams as g }; diff --git a/source/vendor/swiper-bundle/shared/ssr-window.esm.min.mjs b/source/vendor/swiper-bundle/shared/ssr-window.esm.min.mjs new file mode 100644 index 0000000..4ee44c8 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/ssr-window.esm.min.mjs @@ -0,0 +1,2 @@ +function isObject(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function extend(e,t){void 0===e&&(e={}),void 0===t&&(t={}),Object.keys(t).forEach((n=>{void 0===e[n]?e[n]=t[n]:isObject(t[n])&&isObject(e[n])&&Object.keys(t[n]).length>0&&extend(e[n],t[n])}))}const ssrDocument={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function getDocument(){const e="undefined"!=typeof document?document:{};return extend(e,ssrDocument),e}const ssrWindow={document:ssrDocument,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function getWindow(){const e="undefined"!=typeof window?window:{};return extend(e,ssrWindow),e}export{getWindow as a,getDocument as g}; +//# sourceMappingURL=ssr-window.esm.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/ssr-window.esm.min.mjs.map b/source/vendor/swiper-bundle/shared/ssr-window.esm.min.mjs.map new file mode 100644 index 0000000..2a3d646 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/ssr-window.esm.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"ssr-window.esm.mjs.mjs","names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window"],"sources":["0"],"mappings":"AAYA,SAASA,SAASC,GAChB,OAAe,OAARA,GAA+B,iBAARA,GAAoB,gBAAiBA,GAAOA,EAAIC,cAAgBC,MAChG,CACA,SAASC,OAAOC,EAAQC,QACP,IAAXD,IACFA,EAAS,CAAC,QAEA,IAARC,IACFA,EAAM,CAAC,GAETH,OAAOI,KAAKD,GAAKE,SAAQC,SACI,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAAcT,SAASM,EAAIG,KAAST,SAASK,EAAOI,KAASN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GACpJN,OAAOC,EAAOI,GAAMH,EAAIG,GAC1B,GAEJ,CACA,MAAME,YAAc,CAClBC,KAAM,CAAC,EACP,gBAAAC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBC,cAAe,CACb,IAAAC,GAAQ,EACRC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACL,SAAAC,GAAa,IAGjBC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,CAAC,EACR,YAAAC,GAAgB,EAChBC,qBAAoB,IACX,KAIbC,gBAAe,KACN,CAAC,GAEVC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGZ,SAASC,cACP,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,CAAC,EAE1D,OADAtC,OAAOqC,EAAK9B,aACL8B,CACT,CACA,MAAME,UAAY,CAChBD,SAAU/B,YACViC,UAAW,CACTC,UAAW,IAEbd,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVO,QAAS,CACP,YAAAC,GAAgB,EAChB,SAAAC,GAAa,EACb,EAAAC,GAAM,EACN,IAAAC,GAAQ,GAEVC,YAAa,WACX,OAAOC,IACT,EACA,gBAAAvC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBuC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIb,KAAAC,GAAS,EACT,IAAAC,GAAQ,EACRC,OAAQ,CAAC,EACT,UAAAC,GAAc,EACd,YAAAC,GAAgB,EAChBC,WAAU,KACD,CAAC,GAEVC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9B,oBAAAC,CAAqBC,GACO,oBAAfN,YAGXC,aAAaK,EACf,GAEF,SAASC,YACP,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,CAAC,EAEtD,OADA/D,OAAO8D,EAAKvB,WACLuB,CACT,QAESD,eAAgBzB"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/ssr-window.esm.mjs b/source/vendor/swiper-bundle/shared/ssr-window.esm.mjs new file mode 100644 index 0000000..874f0e9 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/ssr-window.esm.mjs @@ -0,0 +1,145 @@ +/** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ +/* eslint-disable no-param-reassign */ +function isObject(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; +} +function extend(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + extend(target[key], src[key]); + } + }); +} +const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } +}; +function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend(doc, ssrDocument); + return doc; +} +const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } +}; +function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend(win, ssrWindow); + return win; +} + +export { getWindow as a, getDocument as g }; diff --git a/source/vendor/swiper-bundle/shared/swiper-core.min.mjs b/source/vendor/swiper-bundle/shared/swiper-core.min.mjs new file mode 100644 index 0000000..f1b5357 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/swiper-core.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";import{a as elementParents,p as elementStyle,e as elementChildren,s as setCSSProperty,f as elementOuterSize,q as elementNextAll,r as elementPrevAll,j as getTranslate,t as animateCSSModeScroll,n as nextTick,u as showWarning,c as createElement,v as elementIsChildOf,d as now,w as extend,h as elementIndex,x as deleteProps}from"./utils.min.mjs";let support,deviceCached,browser;function calcSupport(){const e=getWindow(),t=getDocument();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}function getSupport(){return support||(support=calcSupport()),support}function calcDevice(e){let{userAgent:t}=void 0===e?{}:e;const s=getSupport(),i=getWindow(),r=i.navigator.platform,n=t||i.navigator.userAgent,a={ios:!1,android:!1},l=i.screen.width,o=i.screen.height,d=n.match(/(Android);?[\s\/]+([\d.]+)?/);let c=n.match(/(iPad).*OS\s([\d_]+)/);const p=n.match(/(iPod)(.*OS\s([\d_]+))?/),u=!c&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===r;let m="MacIntel"===r;return!c&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${o}`)>=0&&(c=n.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),m=!1),d&&!h&&(a.os="android",a.android=!0),(c||u||p)&&(a.os="ios",a.ios=!0),a}function getDevice(e){return void 0===e&&(e={}),deviceCached||(deviceCached=calcDevice(e)),deviceCached}function calcBrowser(){const e=getWindow(),t=getDevice();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=i();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||r&&t.ios,isWebView:r}}function getBrowser(){return browser||(browser=calcBrowser()),browser}function Resize(e){let{swiper:t,on:s,emit:i}=e;const r=getWindow();let n=null,a=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},o=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{a=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),n.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",o))})),s("destroy",(()=>{a&&r.cancelAnimationFrame(a),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",o)}))}function Observer(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const n=[],a=getWindow(),l=function(e,s){void 0===s&&(s={});const i=new(a.MutationObserver||a.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};a.requestAnimationFrame?a.requestAnimationFrame(s):a.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=elementParents(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}var eventsEmitter={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};function updateSize(){const e=this;let t,s;const i=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:i.clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:i.clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(elementStyle(i,"padding-left")||0,10)-parseInt(elementStyle(i,"padding-right")||0,10),s=s-parseInt(elementStyle(i,"padding-top")||0,10)-parseInt(elementStyle(i,"padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))}function updateSlides(){const e=this;function t(t,s){return parseFloat(t.getPropertyValue(e.getDirectionLabel(s))||0)}const s=e.params,{wrapperEl:i,slidesEl:r,size:n,rtlTranslate:a,wrongRTL:l}=e,o=e.virtual&&s.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=elementChildren(r,`.${e.params.slideClass}, swiper-slide`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=s.slidesOffsetBefore;"function"==typeof f&&(f=s.slidesOffsetBefore.call(e));let v=s.slidesOffsetAfter;"function"==typeof v&&(v=s.slidesOffsetAfter.call(e));const g=e.snapGrid.length,w=e.slidesGrid.length;let S=s.spaceBetween,T=-f,b=0,x=0;if(void 0===n)return;"string"==typeof S&&S.indexOf("%")>=0?S=parseFloat(S.replace("%",""))/100*n:"string"==typeof S&&(S=parseFloat(S)),e.virtualSize=-S,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(setCSSProperty(i,"--swiper-centered-offset-before",""),setCSSProperty(i,"--swiper-centered-offset-after",""));const y=s.grid&&s.grid.rows>1&&e.grid;let E;y?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const C="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-n)}if(o&&s.loop){const t=m[0]+S;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${S}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(S||0)})),e-=S;const t=e-n;u=u.map((e=>e<=0?-f:e>t?t+v:e))}if(s.centerInsufficientSlides){let e=0;m.forEach((t=>{e+=t+(S||0)})),e-=S;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{u[t]=e-s})),h.forEach(((e,t)=>{h[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){setCSSProperty(i,"--swiper-centered-offset-before",-u[0]+"px"),setCSSProperty(i,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),u.length!==g&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==w&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}}function updateAutoHeight(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)}function updateSlidesOffset(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};function updateSlidesProgress(e){void 0===e&&(e=this&&this.translate||0);const t=this,s=t.params,{slides:i,rtlTranslate:r,snapGrid:n}=t;if(0===i.length)return;void 0===i[0].swiperSlideOffset&&t.updateSlidesOffset();let a=-e;r&&(a=e),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&h<=t.size||u<=0&&h>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),toggleSlideClasses$1(o,f,s.slideVisibleClass),toggleSlideClasses$1(o,m,s.slideFullyVisibleClass),o.progress=r?-c:c,o.originalProgress=r?-p:p}}function updateProgress(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:l}=t;const o=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=l||r>=1,s&&(r=0),l&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=r?(o-r)/a:(o+a-n)/a,l>1&&(l-=1)}Object.assign(t,{progress:r,progressLoop:l,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!o&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(o&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)}const toggleSlideClasses=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};function updateSlidesClasses(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,l=e=>elementChildren(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${r}"]`);else a?(o=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):o=t[r];o&&(a||(c=elementNextAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=elementPrevAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{toggleSlideClasses(e,e===o,s.slideActiveClass),toggleSlideClasses(e,e===c,s.slideNextClass),toggleSlideClasses(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()}const processLazyPreloader=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},unlazy=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},preload=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&unlazy(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&unlazy(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=getActiveIndexByTranslate(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/r.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===n&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&preload(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))}function updateClickedSlide(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;eo?o:i&&ea?"next":n=o.length&&(v=o.length-1);const g=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(u?g>n.translate&&g>n.minTranslate():gn.translate&&g>n.maxTranslate()&&(p||0)!==a)return!1}let w;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(g),w=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return animateCSSModeScroll({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(g),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,w),0===t?n.transitionEnd(s,w):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,w))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0}function slideToLoop(e,t,s,i){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let l=r.params.slidesPerView;"auto"===l?l=r.slidesPerViewDynamic():(l=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&l%2==0&&(l+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r}function slideNext(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)}function slidePrev(e,t,s){void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:l,enabled:o,animating:d}=i;if(!o||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?i.translate:-i.translate),h=n.map((e=>p(e)));let m=n[h.indexOf(u)-1];if(void 0===m&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(m=n[e>0?e-1:e])}let f=0;if(void 0!==m&&(f=a.indexOf(m),f<0&&(f=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(f=f-i.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(f,e,t,s)})),!0):i.slideTo(f,e,t,s)}function slideReset(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)}function slideToClosest(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),l=a+Math.floor((n-a)/r.params.slidesPerGroup),o=r.rtlTranslate?r.translate:-r.translate;if(o>=r.snapGrid[l]){const e=r.snapGrid[l];o-e>(r.snapGrid[l+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[l-1];o-e<=(r.snapGrid[l]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)}function slideToClickedSlide(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const a=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(elementChildren(s,`${a}[data-swiper-slide-index="${r}"]`)[0]),nextTick((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(elementChildren(s,`${a}[data-swiper-slide-index="${r}"]`)[0]),nextTick((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{elementChildren(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),l=t.slides.length%a!=0,o=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):b=n;const x="next"===i||!i,y="prev"===i||!i;let E=0,C=0;const M=w?Math.ceil(d.length/h.grid.rows):d.length,P=(w?d[n].column:n)+(m&&void 0===r?-f/2+.5:0);if(P=0;t-=1)d[t].column===e&&S.push(t)}else S.push(M-t-1)}}else if(P+f>M-g){C=Math.max(P-(M-2*g),v);for(let e=0;e{e.column===t&&T.push(s)})):T.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),y&&S.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===h.slidesPerView?o.updateSlides():w&&(S.length>0&&y||T.length>0&&x)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),h.watchSlidesProgress&&o.updateSlidesOffset(),s)if(S.length>0&&y){if(void 0===t){const e=o.slidesGrid[b],t=o.slidesGrid[b+E]-e;l?o.setTranslate(o.translate-t):(o.slideTo(b+Math.ceil(E),0,!1,!0),r&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(r){const e=w?S.length/h.grid.rows:S.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(T.length>0&&x)if(void 0===t){const e=o.slidesGrid[b],t=o.slidesGrid[b-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(b-C,0,!1,!0),r&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=w?T.length/h.grid.rows:T.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===h.slidesPerView&&s})}o.emit("loopFix")}function loopDestroy(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))}function unsetGrabCursor(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function closestElement(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===getDocument()||s===getWindow())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}function preventEdgeSwipe(e,t,s){const i=getWindow(),{params:r}=e,n=r.edgeSwipeDetection,a=r.edgeSwipeThreshold;return!n||!(s<=a||s>=i.innerWidth-a)||"prevent"===n&&(t.preventDefault(),!0)}function onTouchStart(e){const t=this,s=getDocument();let i=e;i.originalEvent&&(i=i.originalEvent);const r=t.touchEventsData;if("pointerdown"===i.type){if(null!==r.pointerId&&r.pointerId!==i.pointerId)return;r.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(r.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void preventEdgeSwipe(t,i,i.targetTouches[0].pageX);const{params:n,touches:a,enabled:l}=t;if(!l)return;if(!n.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&n.preventInteractionOnTransition)return;!t.animating&&n.cssMode&&n.loop&&t.loopFix();let o=i.target;if("wrapper"===n.touchEventsTarget&&!elementIsChildOf(o,t.wrapperEl))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(r.isTouched&&r.isMoved)return;const d=!!n.noSwipingClass&&""!==n.noSwipingClass,c=i.composedPath?i.composedPath():i.path;d&&i.target&&i.target.shadowRoot&&c&&(o=c[0]);const p=n.noSwipingSelector?n.noSwipingSelector:`.${n.noSwipingClass}`,u=!(!i.target||!i.target.shadowRoot);if(n.noSwiping&&(u?closestElement(p,o):o.closest(p)))return void(t.allowClick=!0);if(n.swipeHandler&&!o.closest(n.swipeHandler))return;a.currentX=i.pageX,a.currentY=i.pageY;const h=a.currentX,m=a.currentY;if(!preventEdgeSwipe(t,i,h))return;Object.assign(r,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),a.startX=h,a.startY=m,r.touchStartTime=now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,n.threshold>0&&(r.allowThresholdMove=!1);let f=!0;o.matches(r.focusableElements)&&(f=!1,"SELECT"===o.nodeName&&(r.isTouched=!1)),s.activeElement&&s.activeElement.matches(r.focusableElements)&&s.activeElement!==o&&s.activeElement.blur();const v=f&&t.allowTouchMove&&n.touchStartPreventDefault;!n.touchStartForcePreventDefault&&!v||o.isContentEditable||i.preventDefault(),n.freeMode&&n.freeMode.enabled&&t.freeMode&&t.animating&&!n.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function onTouchMove(e){const t=getDocument(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:a,enabled:l}=s;if(!l)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let o,d=e;if(d.originalEvent&&(d=d.originalEvent),"pointermove"===d.type){if(null!==i.touchId)return;if(d.pointerId!==i.pointerId)return}if("touchmove"===d.type){if(o=[...d.changedTouches].filter((e=>e.identifier===i.touchId))[0],!o||o.identifier!==i.touchId)return}else o=d;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",d));const c=o.pageX,p=o.pageY;if(d.preventedByNestedSwiper)return n.startX=c,void(n.startY=p);if(!s.allowTouchMove)return d.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:c,startY:p,currentX:c,currentY:p}),i.touchStartTime=now()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(pn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(cn.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&d.target===t.activeElement&&d.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",d),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=c,n.currentY=p;const u=n.currentX-n.startX,h=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(u**2+h**2)=25&&(e=180*Math.atan2(Math.abs(h),Math.abs(u))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",d),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling||"touchmove"===d.type&&i.preventTouchMoveFromPointerMove)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&d.cancelable&&d.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&d.stopPropagation();let m=s.isHorizontal()?u:h,f=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(m=Math.abs(m)*(a?1:-1),f=Math.abs(f)*(a?1:-1)),n.diff=m,m*=r.touchRatio,a&&(m=-m,f=-f);const v=s.touchesDirection;s.swipeDirection=m>0?"prev":"next",s.touchesDirection=f>0?"prev":"next";const g=s.params.loop&&!r.cssMode,w="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(g&&w&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",d)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&v!==s.touchesDirection&&g&&w&&Math.abs(m)>=1)return Object.assign(n,{startX:c,startY:p,currentX:c,currentY:p,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",d),i.isMoved=!0,i.currentTranslate=m+i.startTranslate;let S=!0,T=r.resistanceRatio;if(r.touchReleaseOnEdges&&(T=0),m>0?(g&&w&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(S=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+m)**T))):m<0&&(g&&w&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(m)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function onTouchEnd(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:a,rtlTranslate:l,slidesGrid:o,enabled:d}=t;if(!d)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const c=now(),p=c-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),p<300&&c-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=now(),nextTick((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===a.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let u;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,u=n.followFinger?l?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:u});const h=u>=-t.maxTranslate()&&!t.params.loop;let m=0,f=t.slidesSizesGrid[0];for(let e=0;e=o[e]&&u=o[e])&&(m=e,f=o[o.length-1]-o[o.length-2])}let v=null,g=null;n.rewind&&(t.isBeginning?g=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(v=0));const w=(u-o[m])/f,S=mn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?v:m+S):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-n.longSwipesRatio?t.slideTo(m+S):null!==g&&w<0&&Math.abs(w)>n.longSwipesRatio?t.slideTo(g):t.slideTo(m))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(m+S):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==v?v:m+S),"prev"===t.swipeDirection&&t.slideTo(null!==g?g:m))}}function onResize(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function onClick(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function onScroll(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function onLoad(e){const t=this;processLazyPreloader(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function onDocumentTouchStart(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const events=(e,t)=>{const s=getDocument(),{params:i,el:r,wrapperEl:n,device:a}=e,l=!!i.nested,o="on"===t?"addEventListener":"removeEventListener",d=t;r&&"string"!=typeof r&&(s[o]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),r[o]("touchstart",e.onTouchStart,{passive:!1}),r[o]("pointerdown",e.onTouchStart,{passive:!1}),s[o]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[o]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[o]("touchend",e.onTouchEnd,{passive:!0}),s[o]("pointerup",e.onTouchEnd,{passive:!0}),s[o]("pointercancel",e.onTouchEnd,{passive:!0}),s[o]("touchcancel",e.onTouchEnd,{passive:!0}),s[o]("pointerout",e.onTouchEnd,{passive:!0}),s[o]("pointerleave",e.onTouchEnd,{passive:!0}),s[o]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[o]("click",e.onClick,!0),i.cssMode&&n[o]("scroll",e.onScroll),i.updateOnWindowResize?e[d](a.ios||a.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):e[d]("observerUpdate",onResize,!0),r[o]("load",e.onLoad,{capture:!0}))};function attachEvents(){const e=this,{params:t}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),e.onDocumentTouchStart=onDocumentTouchStart.bind(e),t.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e),e.onLoad=onLoad.bind(e),events(e,"on")}function detachEvents(){events(this,"off")}var events$1={attachEvents:attachEvents,detachEvents:detachEvents};const isGridEnabled=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;function setBreakpoint(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const l=(a in n?n[a]:void 0)||e.originalParams,o=isGridEnabled(e,i),d=isGridEnabled(e,l),c=e.params.grabCursor,p=l.grabCursor,u=i.enabled;o&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),c&&!p?e.unsetGrabCursor():!c&&p&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=i[t]&&i[t].enabled,r=l[t]&&l[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const h=l.direction&&l.direction!==i.direction,m=i.loop&&(l.slidesPerView!==i.slidesPerView||h),f=i.loop;h&&s&&e.changeDirection(),extend(e.params,l);const v=e.params.enabled,g=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),u&&!v?e.disable():!u&&v&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",l),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!f&&g?(e.loopCreate(t),e.updateSlides()):f&&!g&&e.loopDestroy()),e.emit("breakpoint",l)}function getBreakpoint(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=getWindow(),n="window"===t?r.innerHeight:s.clientHeight,a=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));a.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}function addClasses(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=prepareClasses(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()}function removeClasses(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}var classes={addClasses:addClasses,removeClasses:removeClasses};function checkOverflow(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:i}=s;if(i){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*i;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}var checkOverflow$1={checkOverflow:checkOverflow},defaults={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function moduleExtendParams(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),extend(t,s)):extend(t,s)):extend(t,s)}}const prototypes={eventsEmitter:eventsEmitter,update:update,translate:translate,transition:transition,slide:slide,loop:loop,grabCursor:grabCursor,events:events$1,breakpoints:breakpoints,checkOverflow:checkOverflow$1,classes:classes},extendedDefaults={};class Swiper{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const i=extend({},t,{el:s});e.push(new Swiper(i))})),e}const a=this;a.__swiper__=!0,a.support=getSupport(),a.device=getDevice({userAgent:t.userAgent}),a.browser=getBrowser(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],t.modules&&Array.isArray(t.modules)&&a.modules.push(...t.modules);const l={};a.modules.forEach((e=>{e({params:t,swiper:a,extendParams:moduleExtendParams(t,l),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})}));const o=extend({},defaults,l);return a.params=extend({},o,extendedDefaults,t),a.originalParams=extend({},a.params),a.passedParams=extend({},t),a.params&&a.params.on&&Object.keys(a.params.on).forEach((e=>{a.on(e,a.params.on[e])})),a.params&&a.params.onAny&&a.onAny(a.params.onAny),Object.assign(a,{enabled:a.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===a.params.direction,isVertical:()=>"vertical"===a.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:a.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:a.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),a.emit("_swiper"),a.params.init&&a.init(),a}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=elementChildren(t,`.${s.slideClass}, swiper-slide`),r=elementIndex(i[0]);return elementIndex(e)-r}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=elementChildren(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?Math.ceil(i[l].swiperSlideSize):0;for(let s=l+1;sa&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>a&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){r[l]-r[e]{t.complete&&processLazyPreloader(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return elementChildren(s,i())[0]})();return!r&&t.params.createElements&&(r=createElement("div",t.params.wrapperClass),s.append(r),elementChildren(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction")),wrongRTL:"-webkit-box"===elementStyle(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?processLazyPreloader(t,e):e.addEventListener("load",(e=>{processLazyPreloader(t,e.target)}))})),preload(t),t.initialized=!0,preload(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),n&&n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),deleteProps(s)),s.destroyed=!0),null}static extendDefaults(e){extend(extendedDefaults,e)}static get extendedDefaults(){return extendedDefaults}static get defaults(){return defaults}static installModule(e){Swiper.prototype.__modules__||(Swiper.prototype.__modules__=[]);const t=Swiper.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>Swiper.installModule(e))),Swiper):(Swiper.installModule(e),Swiper)}}Object.keys(prototypes).forEach((e=>{Object.keys(prototypes[e]).forEach((t=>{Swiper.prototype[t]=prototypes[e][t]}))})),Swiper.use([Resize,Observer]);export{Swiper as S,defaults as d}; +//# sourceMappingURL=swiper-core.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/swiper-core.min.mjs.map b/source/vendor/swiper-bundle/shared/swiper-core.min.mjs.map new file mode 100644 index 0000000..0b1eea0 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/swiper-core.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-core.mjs.mjs","names":["getWindow","getDocument","elementParents","elementStyle","elementChildren","setCSSProperty","elementOuterSize","elementNextAll","elementPrevAll","getTranslate","animateCSSModeScroll","nextTick","showWarning","createElement","elementIsChildOf","now","extend","elementIndex","deleteProps","support","deviceCached","browser","calcSupport","window","document","smoothScroll","documentElement","style","touch","DocumentTouch","getSupport","calcDevice","_temp","userAgent","platform","navigator","ua","device","ios","android","screenWidth","screen","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","indexOf","os","getDevice","overrides","calcBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","split","map","num","Number","isWebView","test","isSafariBrowser","need3dFix","getBrowser","Resize","_ref","swiper","on","emit","observer","animationFrame","resizeHandler","destroyed","initialized","orientationChangeHandler","params","resizeObserver","ResizeObserver","entries","requestAnimationFrame","newWidth","newHeight","forEach","_ref2","contentBoxSize","contentRect","target","el","inlineSize","blockSize","observe","addEventListener","cancelAnimationFrame","unobserve","removeEventListener","Observer","extendParams","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","__preventObserver__","length","observerUpdate","setTimeout","attributes","childList","isElement","characterData","push","observeParents","observeSlideChildren","containerParents","hostEl","i","wrapperEl","disconnect","splice","eventsEmitter","events","handler","priority","self","this","eventsListeners","method","event","once","onceHandler","off","__emitterProxy","_len","arguments","args","Array","_key","apply","onAny","eventsAnyListeners","offAny","index","eventHandler","data","context","_len2","_key2","isArray","slice","unshift","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","Object","assign","size","updateSlides","getDirectionPropertyValue","node","label","parseFloat","getPropertyValue","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","call","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","replace","virtualSize","slideEl","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","unsetSlides","shouldResetSlideSize","slidesPerView","breakpoints","keys","filter","key","slide","updateSlide","slideStyles","getComputedStyle","currentTransform","transform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","offsetWidth","Math","floor","swiperSlideSize","abs","slidesPerGroup","min","slidesPerGroupSkip","max","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","loop","groups","ceil","slidesBefore","slidesAfter","groupSize","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","classList","contains","maxBackfaceHiddenSlides","add","remove","updateAutoHeight","speed","activeSlides","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","activeIndex","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","toggleSlideClasses$1","condition","className","updateSlidesProgress","translate","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","progress","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","toggleSlideClasses","updateSlidesClasses","getFilteredSlide","selector","activeSlide","prevSlide","nextSlide","column","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","processLazyPreloader","imageEl","closest","lazyEl","querySelector","lazyPreloaderClass","shadowRoot","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","len","slidesPerViewDynamic","activeColumn","preloadColumns","from","slideIndexLastInView","rewind","realIndex","getActiveIndexByTranslate","normalizeSlideIndex","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","getAttribute","runCallbacksOnInit","updateClickedSlide","path","pathEl","matches","slideFound","clickedSlide","undefined","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","axis","virtualTranslate","currentTranslate","setTranslate","byController","x","y","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","targetPosition","side","scrollTo","behavior","onTranslateToWrapperTransitionEnd","e","duration","transitionDuration","transitionDelay","transitionEmit","direction","step","dir","transitionStart","transitionEnd","transition","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","scrollSnapType","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","setAttribute","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","c","constructor","loopDestroy","newSlidesOrder","swiperSlideIndex","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","found","getRootNode","host","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","pointerType","targetEl","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","nodeName","activeElement","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","PI","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","CustomEvent","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","Date","getTime","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","clearTimeout","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","prop","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","a","b","matchMedia","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","autoheight","centered","removeClasses","classes","wasLocked","lastSlideRightEdge","checkOverflow$1","defaults","init","swiperElementNodeName","createElements","eventsPrefix","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","obj","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","prototype","toString","querySelectorAll","swipers","newParams","__swiper__","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","current","cls","join","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","element","mounted","parentNode","toUpperCase","getWrapperSelector","trim","getWrapper","slideSlots","lazyElements","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/swiper-core.mjs b/source/vendor/swiper-bundle/shared/swiper-core.mjs new file mode 100644 index 0000000..6567151 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/swiper-core.mjs @@ -0,0 +1,3907 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; +import { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs'; + +let support; +function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; +} +function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; +} + +let deviceCached; +function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; +} +function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; +} + +let browser; +function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; +} +function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; +} + +function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); +} + +function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); +} + +/* eslint-disable no-underscore-dangle */ + +var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } +}; + +function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); +} + +function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } +} + +function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; +} + +function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } +} + +const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } +}; +function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } +} + +function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); +} + +const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } +}; +function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); +} + +const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } +}; +const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); +}; +const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } +}; + +function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; +} +function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } +} + +function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} + +var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide +}; + +function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; +} + +function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); +} + +function minTranslate() { + return -this.snapGrid[0]; +} + +function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; +} + +function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; +} + +var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo +}; + +function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); +} + +function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } +} + +function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); +} + +function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); +} + +var transition = { + setTransition, + transitionStart, + transitionEnd +}; + +function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; +} + +function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; +} + +/* eslint no-unused-vars: "off" */ +function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); +} + +function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} + +var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide +}; + +function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); +} + +function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); +} + +function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); +} + +var loop = { + loopCreate, + loopFix, + loopDestroy +}; + +function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +var grabCursor = { + setGrabCursor, + unsetGrabCursor +}; + +// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd +function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); +} +function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; +} +function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); +} + +function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); +} + +function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} + +function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} + +function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} + +function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); +} + +function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); +} + +function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } +} + +const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); +}; +function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); +} +function detachEvents() { + const swiper = this; + events(swiper, 'off'); +} +var events$1 = { + attachEvents, + detachEvents +}; + +const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; +}; +function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); +} + +function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; +} + +var breakpoints = { + setBreakpoint, + getBreakpoint +}; + +function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; +} +function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); +} + +function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); +} + +var classes = { + addClasses, + removeClasses +}; + +function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } +} +var checkOverflow$1 = { + checkOverflow +}; + +var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false +}; + +function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; +} + +/* eslint no-param-reassign: "off" */ +const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes +}; +const extendedDefaults = {}; +class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } +} +Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); +}); +Swiper.use([Resize, Observer]); + +export { Swiper as S, defaults as d }; diff --git a/source/vendor/swiper-bundle/shared/update-on-virtual-data.min.mjs b/source/vendor/swiper-bundle/shared/update-on-virtual-data.min.mjs new file mode 100644 index 0000000..54c8e04 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/update-on-virtual-data.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,p as paramsList,i as isObject,n as needsNavigation,a as needsPagination,b as needsScrollbar}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";function getParams(a,e){void 0===a&&(a={}),void 0===e&&(e=!0);const s={on:{}},n={},t={};extend(s,defaults),s._emitClasses=!0,s.init=!1;const r={},i=paramsList.map((a=>a.replace(/_/,""))),l=Object.assign({},a);return Object.keys(l).forEach((l=>{void 0!==a[l]&&(i.indexOf(l)>=0?isObject(a[l])?(s[l]={},t[l]={},extend(s[l],a[l]),extend(t[l],a[l])):(s[l]=a[l],t[l]=a[l]):0===l.search(/on[A-Z]/)&&"function"==typeof a[l]?e?n[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:s.on[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:r[l]=a[l])})),["navigation","pagination","scrollbar"].forEach((a=>{!0===s[a]&&(s[a]={}),!1===s[a]&&delete s[a]})),{params:s,passedParams:t,rest:r,events:n}}function mountSwiper(a,e){let{el:s,nextEl:n,prevEl:t,paginationEl:r,scrollbarEl:i,swiper:l}=a;needsNavigation(e)&&n&&t&&(l.params.navigation.nextEl=n,l.originalParams.navigation.nextEl=n,l.params.navigation.prevEl=t,l.originalParams.navigation.prevEl=t),needsPagination(e)&&r&&(l.params.pagination.el=r,l.originalParams.pagination.el=r),needsScrollbar(e)&&i&&(l.params.scrollbar.el=i,l.originalParams.scrollbar.el=i),l.init(s)}function getChangedParams(a,e,s,n,t){const r=[];if(!e)return r;const i=a=>{r.indexOf(a)<0&&r.push(a)};if(s&&n){const a=n.map(t),e=s.map(t);a.join("")!==e.join("")&&i("children"),n.length!==s.length&&i("children")}return paramsList.filter((a=>"_"===a[0])).map((a=>a.replace(/_/,""))).forEach((s=>{if(s in a&&s in e)if(isObject(a[s])&&isObject(e[s])){const n=Object.keys(a[s]),t=Object.keys(e[s]);n.length!==t.length?i(s):(n.forEach((n=>{a[s][n]!==e[s][n]&&i(s)})),t.forEach((n=>{a[s][n]!==e[s][n]&&i(s)})))}else a[s]!==e[s]&&i(s)})),r}const updateOnVirtualData=a=>{!a||a.destroyed||!a.params.virtual||a.params.virtual&&!a.params.virtual.enabled||(a.updateSlides(),a.updateProgress(),a.updateSlidesClasses(),a.parallax&&a.params.parallax&&a.params.parallax.enabled&&a.parallax.setTranslate())};export{getChangedParams as a,getParams as g,mountSwiper as m,updateOnVirtualData as u}; +//# sourceMappingURL=update-on-virtual-data.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/update-on-virtual-data.min.mjs.map b/source/vendor/swiper-bundle/shared/update-on-virtual-data.min.mjs.map new file mode 100644 index 0000000..88b07d2 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/update-on-virtual-data.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-on-virtual-data.mjs.mjs","names":["extend","paramsList","isObject","needsNavigation","needsPagination","needsScrollbar","defaults","getParams","obj","splitEvents","params","on","events","passedParams","_emitClasses","init","rest","allowedParams","map","key","replace","plainObj","Object","assign","keys","forEach","indexOf","search","toLowerCase","substr","mountSwiper","_ref","swiperParams","el","nextEl","prevEl","paginationEl","scrollbarEl","swiper","navigation","originalParams","pagination","scrollbar","getChangedParams","oldParams","children","oldChildren","getKey","addKey","push","oldChildrenKeys","childrenKeys","join","length","filter","newKeys","oldKeys","newKey","oldKey","updateOnVirtualData","destroyed","virtual","enabled","updateSlides","updateProgress","updateSlidesClasses","parallax","setTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/update-on-virtual-data.mjs b/source/vendor/swiper-bundle/shared/update-on-virtual-data.mjs new file mode 100644 index 0000000..0fc3050 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/update-on-virtual-data.mjs @@ -0,0 +1,130 @@ +import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +function getParams(obj, splitEvents) { + if (obj === void 0) { + obj = {}; + } + if (splitEvents === void 0) { + splitEvents = true; + } + const params = { + on: {} + }; + const events = {}; + const passedParams = {}; + extend(params, defaults); + params._emitClasses = true; + params.init = false; + const rest = {}; + const allowedParams = paramsList.map(key => key.replace(/_/, '')); + const plainObj = Object.assign({}, obj); + Object.keys(plainObj).forEach(key => { + if (typeof obj[key] === 'undefined') return; + if (allowedParams.indexOf(key) >= 0) { + if (isObject(obj[key])) { + params[key] = {}; + passedParams[key] = {}; + extend(params[key], obj[key]); + extend(passedParams[key], obj[key]); + } else { + params[key] = obj[key]; + passedParams[key] = obj[key]; + } + } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') { + if (splitEvents) { + events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } else { + params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } + } else { + rest[key] = obj[key]; + } + }); + ['navigation', 'pagination', 'scrollbar'].forEach(key => { + if (params[key] === true) params[key] = {}; + if (params[key] === false) delete params[key]; + }); + return { + params, + passedParams, + rest, + events + }; +} + +function mountSwiper(_ref, swiperParams) { + let { + el, + nextEl, + prevEl, + paginationEl, + scrollbarEl, + swiper + } = _ref; + if (needsNavigation(swiperParams) && nextEl && prevEl) { + swiper.params.navigation.nextEl = nextEl; + swiper.originalParams.navigation.nextEl = nextEl; + swiper.params.navigation.prevEl = prevEl; + swiper.originalParams.navigation.prevEl = prevEl; + } + if (needsPagination(swiperParams) && paginationEl) { + swiper.params.pagination.el = paginationEl; + swiper.originalParams.pagination.el = paginationEl; + } + if (needsScrollbar(swiperParams) && scrollbarEl) { + swiper.params.scrollbar.el = scrollbarEl; + swiper.originalParams.scrollbar.el = scrollbarEl; + } + swiper.init(el); +} + +function getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) { + const keys = []; + if (!oldParams) return keys; + const addKey = key => { + if (keys.indexOf(key) < 0) keys.push(key); + }; + if (children && oldChildren) { + const oldChildrenKeys = oldChildren.map(getKey); + const childrenKeys = children.map(getKey); + if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children'); + if (oldChildren.length !== children.length) addKey('children'); + } + const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, '')); + watchParams.forEach(key => { + if (key in swiperParams && key in oldParams) { + if (isObject(swiperParams[key]) && isObject(oldParams[key])) { + const newKeys = Object.keys(swiperParams[key]); + const oldKeys = Object.keys(oldParams[key]); + if (newKeys.length !== oldKeys.length) { + addKey(key); + } else { + newKeys.forEach(newKey => { + if (swiperParams[key][newKey] !== oldParams[key][newKey]) { + addKey(key); + } + }); + oldKeys.forEach(oldKey => { + if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key); + }); + } + } else if (swiperParams[key] !== oldParams[key]) { + addKey(key); + } + } + }); + return keys; +} + +const updateOnVirtualData = swiper => { + if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { + swiper.parallax.setTranslate(); + } +}; + +export { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u }; diff --git a/source/vendor/swiper-bundle/shared/update-swiper.min.mjs b/source/vendor/swiper-bundle/shared/update-swiper.min.mjs new file mode 100644 index 0000000..d2d6f64 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/update-swiper.min.mjs @@ -0,0 +1,2 @@ +const paramsList=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function extend(e,t){const i=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>i.indexOf(e)<0)).forEach((i=>{void 0===e[i]?e[i]=t[i]:isObject(t[i])&&isObject(e[i])&&Object.keys(t[i]).length>0?t[i].__swiper__?e[i]=t[i]:extend(e[i],t[i]):e[i]=t[i]}))}function needsNavigation(e){return void 0===e&&(e={}),e.navigation&&void 0===e.navigation.nextEl&&void 0===e.navigation.prevEl}function needsPagination(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}function needsScrollbar(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}function uniqueClasses(e){void 0===e&&(e="");const t=e.split(" ").map((e=>e.trim())).filter((e=>!!e)),i=[];return t.forEach((e=>{i.indexOf(e)<0&&i.push(e)})),i.join(" ")}function attrToProp(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}function wrapperClass(e){return void 0===e&&(e=""),e?e.includes("swiper-wrapper")?e:`swiper-wrapper ${e}`:"swiper-wrapper"}function updateSwiper(e){let{swiper:t,slides:i,passedParams:l,changedParams:n,nextEl:o,prevEl:r,scrollbarEl:a,paginationEl:s}=e;const d=n.filter((e=>"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:c,pagination:p,navigation:u,scrollbar:v,virtual:g,thumbs:b}=t;let f,_,w,h,S,E,m,C;n.includes("thumbs")&&l.thumbs&&l.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(f=!0),n.includes("controller")&&l.controller&&l.controller.control&&c.controller&&!c.controller.control&&(_=!0),n.includes("pagination")&&l.pagination&&(l.pagination.el||s)&&(c.pagination||!1===c.pagination)&&p&&!p.el&&(w=!0),n.includes("scrollbar")&&l.scrollbar&&(l.scrollbar.el||a)&&(c.scrollbar||!1===c.scrollbar)&&v&&!v.el&&(h=!0),n.includes("navigation")&&l.navigation&&(l.navigation.prevEl||r)&&(l.navigation.nextEl||o)&&(c.navigation||!1===c.navigation)&&u&&!u.prevEl&&!u.nextEl&&(S=!0);const x=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),c[e].prevEl=void 0,c[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),c[e].el=void 0,t[e].el=void 0))};if(n.includes("loop")&&t.isElement&&(c.loop&&!l.loop?E=!0:!c.loop&&l.loop?m=!0:C=!0),d.forEach((e=>{if(isObject(c[e])&&isObject(l[e]))Object.assign(c[e],l[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in l[e])||l[e].enabled||x(e);else{const t=l[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?c[e]=l[e]:!1===t&&x(e)}})),d.includes("controller")&&!_&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),n.includes("children")&&i&&g&&c.virtual.enabled?(g.slides=i,g.update(!0)):n.includes("virtual")&&g&&c.virtual.enabled&&(i&&(g.slides=i),g.update(!0)),n.includes("children")&&i&&c.loop&&(C=!0),f){b.init()&&b.update(!0)}_&&(t.controller.control=c.controller.control),w&&(!t.isElement||s&&"string"!=typeof s||(s=document.createElement("div"),s.classList.add("swiper-pagination"),s.part.add("pagination"),t.el.appendChild(s)),s&&(c.pagination.el=s),p.init(),p.render(),p.update()),h&&(!t.isElement||a&&"string"!=typeof a||(a=document.createElement("div"),a.classList.add("swiper-scrollbar"),a.part.add("scrollbar"),t.el.appendChild(a)),a&&(c.scrollbar.el=a),v.init(),v.updateSize(),v.setTranslate()),S&&(t.isElement&&(o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-button-next"),o.innerHTML=t.hostEl.constructor.nextButtonSvg,o.part.add("button-next"),t.el.appendChild(o)),r&&"string"!=typeof r||(r=document.createElement("div"),r.classList.add("swiper-button-prev"),r.innerHTML=t.hostEl.constructor.prevButtonSvg,r.part.add("button-prev"),t.el.appendChild(r))),o&&(c.navigation.nextEl=o),r&&(c.navigation.prevEl=r),u.init(),u.update()),n.includes("allowSlideNext")&&(t.allowSlideNext=l.allowSlideNext),n.includes("allowSlidePrev")&&(t.allowSlidePrev=l.allowSlidePrev),n.includes("direction")&&t.changeDirection(l.direction,!1),(E||C)&&t.loopDestroy(),(m||C)&&t.loopCreate(),t.update()}export{needsPagination as a,needsScrollbar as b,attrToProp as c,uniqueClasses as d,extend as e,isObject as i,needsNavigation as n,paramsList as p,updateSwiper as u,wrapperClass as w}; +//# sourceMappingURL=update-swiper.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/update-swiper.min.mjs.map b/source/vendor/swiper-bundle/shared/update-swiper.min.mjs.map new file mode 100644 index 0000000..01b8986 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/update-swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-swiper.mjs.mjs","names":["paramsList","isObject","o","constructor","Object","prototype","toString","call","slice","__swiper__","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","length","needsNavigation","params","navigation","nextEl","prevEl","needsPagination","pagination","el","needsScrollbar","scrollbar","uniqueClasses","classNames","classes","split","map","c","trim","unique","push","join","attrToProp","attrName","replace","l","toUpperCase","wrapperClass","className","includes","updateSwiper","_ref","swiper","slides","passedParams","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","virtual","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","controller","control","destroyModule","mod","destroy","isElement","remove","undefined","loop","assign","enabled","newValue","update","init","document","createElement","classList","add","part","appendChild","render","updateSize","setTranslate","innerHTML","hostEl","nextButtonSvg","prevButtonSvg","allowSlideNext","allowSlidePrev","changeDirection","direction","loopDestroy","loopCreate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/update-swiper.mjs b/source/vendor/swiper-bundle/shared/update-swiper.mjs new file mode 100644 index 0000000..851604f --- /dev/null +++ b/source/vendor/swiper-bundle/shared/update-swiper.mjs @@ -0,0 +1,236 @@ +/* underscore in name -> watch for changes */ +const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', +// modules +'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; +} +function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); +} +function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; +} +function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; +} +function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; +} +function uniqueClasses(classNames) { + if (classNames === void 0) { + classNames = ''; + } + const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c); + const unique = []; + classes.forEach(c => { + if (unique.indexOf(c) < 0) unique.push(c); + }); + return unique.join(' '); +} +function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); +} +function wrapperClass(className) { + if (className === void 0) { + className = ''; + } + if (!className) return 'swiper-wrapper'; + if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`; + return className; +} + +function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); +} + +export { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w }; diff --git a/source/vendor/swiper-bundle/shared/utils.min.mjs b/source/vendor/swiper-bundle/shared/utils.min.mjs new file mode 100644 index 0000000..ac22df9 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/utils.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";function classesToTokens(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function deleteProps(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}function nextTick(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function now(){return Date.now()}function getComputedStyle(e){const t=getWindow();let n;return t.getComputedStyle&&(n=t.getComputedStyle(e,null)),!n&&e.currentStyle&&(n=e.currentStyle),n||(n=e.style),n}function getTranslate(e,t){void 0===t&&(t="x");const n=getWindow();let r,o,s;const l=getComputedStyle(e);return n.WebKitCSSMatrix?(o=l.transform||l.webkitTransform,o.split(",").length>6&&(o=o.split(", ").map((e=>e.replace(",","."))).join(", ")),s=new n.WebKitCSSMatrix("none"===o?"":o)):(s=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),r=s.toString().split(",")),"x"===t&&(o=n.WebKitCSSMatrix?s.m41:16===r.length?parseFloat(r[12]):parseFloat(r[4])),"y"===t&&(o=n.WebKitCSSMatrix?s.m42:16===r.length?parseFloat(r[13]):parseFloat(r[5])),o||0}function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function isNode(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function extend(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let n=1;nt.indexOf(e)<0));for(let t=0,o=n.length;ts?"next":"prev",m=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===i&&(i=l);const e=Math.max(Math.min((l-i)/a,1),0),c=.5-Math.cos(e*Math.PI)/2;let d=s+c*(n-s);if(m(d,n)&&(d=n),t.wrapperEl.scrollTo({[r]:d}),m(d,n))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[r]:d})})),void o.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=o.requestAnimationFrame(u)};u()}function getSlideTransformEl(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function elementChildren(e,t){void 0===t&&(t="");const n=[...e.children];return e instanceof HTMLSlotElement&&n.push(...e.assignedElements()),t?n.filter((e=>e.matches(t))):n}function elementIsChildOf(e,t){const n=t.contains(e);if(!n&&t instanceof HTMLSlotElement){return[...element.assignedElements()].includes(e)}return n}function showWarning(e){try{return void console.warn(e)}catch(e){}}function createElement(e,t){void 0===t&&(t=[]);const n=document.createElement(e);return n.classList.add(...Array.isArray(t)?t:classesToTokens(t)),n}function elementOffset(e){const t=getWindow(),n=getDocument(),r=e.getBoundingClientRect(),o=n.body,s=e.clientTop||o.clientTop||0,l=e.clientLeft||o.clientLeft||0,i=e===t?t.scrollY:e.scrollTop,a=e===t?t.scrollX:e.scrollLeft;return{top:r.top+i-s,left:r.left+a-l}}function elementPrevAll(e,t){const n=[];for(;e.previousElementSibling;){const r=e.previousElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementNextAll(e,t){const n=[];for(;e.nextElementSibling;){const r=e.nextElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementStyle(e,t){return getWindow().getComputedStyle(e,null).getPropertyValue(t)}function elementIndex(e){let t,n=e;if(n){for(t=0;null!==(n=n.previousSibling);)1===n.nodeType&&(t+=1);return t}}function elementParents(e,t){const n=[];let r=e.parentElement;for(;r;)t?r.matches(t)&&n.push(r):n.push(r),r=r.parentElement;return n}function elementTransitionEnd(e,t){t&&e.addEventListener("transitionend",(function n(r){r.target===e&&(t.call(e,r),e.removeEventListener("transitionend",n))}))}function elementOuterSize(e,t,n){const r=getWindow();return n?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function makeElementsArray(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}function getRotateFix(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}export{elementParents as a,elementOffset as b,createElement as c,now as d,elementChildren as e,elementOuterSize as f,getSlideTransformEl as g,elementIndex as h,classesToTokens as i,getTranslate as j,elementTransitionEnd as k,isObject as l,makeElementsArray as m,nextTick as n,getRotateFix as o,elementStyle as p,elementNextAll as q,elementPrevAll as r,setCSSProperty as s,animateCSSModeScroll as t,showWarning as u,elementIsChildOf as v,extend as w,deleteProps as x}; +//# sourceMappingURL=utils.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/utils.min.mjs.map b/source/vendor/swiper-bundle/shared/utils.min.mjs.map new file mode 100644 index 0000000..ee0f99a --- /dev/null +++ b/source/vendor/swiper-bundle/shared/utils.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.mjs.mjs","names":["getWindow","getDocument","classesToTokens","classes","trim","split","filter","c","deleteProps","obj","object","Object","keys","forEach","key","e","nextTick","callback","delay","setTimeout","now","Date","getComputedStyle","el","window","style","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","transform","webkitTransform","length","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","parseFloat","m42","isObject","o","constructor","prototype","call","slice","isNode","node","HTMLElement","nodeType","extend","to","arguments","undefined","noExtend","i","nextSource","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","current","target","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","requestAnimationFrame","getSlideTransformEl","slideEl","querySelector","shadowRoot","elementChildren","element","selector","children","HTMLSlotElement","push","assignedElements","matches","elementIsChildOf","parent","isChild","contains","includes","showWarning","text","console","warn","err","createElement","tag","document","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","body","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementPrevAll","prevEls","previousElementSibling","prev","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parentElement","elementTransitionEnd","addEventListener","fireCallBack","removeEventListener","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/shared/utils.mjs b/source/vendor/swiper-bundle/shared/utils.mjs new file mode 100644 index 0000000..32d8772 --- /dev/null +++ b/source/vendor/swiper-bundle/shared/utils.mjs @@ -0,0 +1,315 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; + +function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); +} + +function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); +} +function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); +} +function now() { + return Date.now(); +} +function getComputedStyle(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; +} +function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; +} +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; +} +function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); +} +function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; +} +function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); +} +function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); +} +function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; +} +function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); +} +function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; +} +function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } +} +function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; +} +function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; +} +function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; +} +function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; +} +function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); +} +function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; +} +function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; +} +function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } +} +function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; +} +function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); +} +function getRotateFix(swiper) { + return v => { + if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { + return v + 0.001; + } + return v; + }; +} + +export { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x }; diff --git a/source/vendor/swiper-bundle/swiper-bundle.css b/source/vendor/swiper-bundle/swiper-bundle.css new file mode 100644 index 0000000..d0d00d8 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-bundle.css @@ -0,0 +1,735 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; +} +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +/* Navigation font end */ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Zoom container styles end */ +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active { + pointer-events: auto; +} +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start */ +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube slide shadows end */ +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +/* Flip slide shadows start */ +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Flip slide shadows end */ +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/source/vendor/swiper-bundle/swiper-bundle.js b/source/vendor/swiper-bundle/swiper-bundle.js new file mode 100644 index 0000000..3f6122d --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-bundle.js @@ -0,0 +1,9663 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); + } + function getRotateFix(swiper) { + return v => { + if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { + return v + 0.001; + } + return v; + }; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + tempDOM.innerHTML = slideEl; + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + slideEl.innerHTML = slide; + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force, beforeInit) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides, + loop: isLoop, + initialSlide + } = swiper.params; + if (beforeInit && !isLoop && initialSlide > 0) { + return; + } + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(false, true); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } else if (res && res.length === 1) { + res = res[0]; + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); + if (swiper.isElement && !targetIsButton) { + const path = e.path || e.composedPath && e.composedPath(); + if (path) { + targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); + } + } + if (swiper.params.navigation.hideOnClick && !targetIsButton) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + let allowTouchMoveTimeout; + function allowTouchMove() { + swiper.touchEventsData.preventTouchMoveFromPointerMove = false; + } + function preventTouchMove() { + clearTimeout(allowTouchMoveTimeout); + swiper.touchEventsData.preventTouchMoveFromPointerMove = true; + allowTouchMoveTimeout = setTimeout(() => { + allowTouchMove(); + }); + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { + return; + } + const zoom = swiper.zoom; + if (!gesture.imageEl) { + return; + } + if (!image.isTouched || !gesture.slideEl) { + return; + } + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + allowTouchMove(); + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + allowTouchMove(); + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + preventTouchMove(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; + controlElements.forEach(controlElement => { + if (!swiper.controller.control) swiper.controller.control = []; + if (controlElement && controlElement.swiper) { + swiper.controller.control.push(controlElement.swiper); + } else if (controlElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onControllerSwiper = e => { + swiper.controller.control.push(e.detail[0]); + swiper.update(); + controlElement.removeEventListener(eventName, onControllerSwiper); + }; + controlElement.addEventListener(eventName, onControllerSwiper); + } + }); + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null, + scrollOnFocus: true + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + let preventFocusHandler; + let focusTargetSlideEl; + let visibilityChangedTimestamp = new Date().getTime(); + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { + const prevEls = makeElementsArray(swiper.navigation.prevEl); + const nextEls = makeElementsArray(swiper.navigation.nextEl); + if (nextEls.includes(targetEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (prevEls.includes(targetEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = e => { + if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { + preventFocusHandler = true; + } + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + preventFocusHandler = false; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const onVisibilityChange = e => { + visibilityChangedTimestamp = new Date().getTime(); + }; + const handleFocus = e => { + if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; + if (new Date().getTime() - visibilityChangedTimestamp < 100) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + focusTargetSlideEl = slideEl; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + requestAnimationFrame(() => { + if (preventFocusHandler) return; + if (swiper.params.loop) { + swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); + } else { + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + } + preventFocusHandler = false; + }); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + // Tab focus + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + } + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener(eventName, onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener(eventName, onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const r = getRotateFix(swiper); + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + const rotateFix = getRotateFix(swiper); + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + const r = getRotateFix(swiper); + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + const rotateFix = getRotateFix(swiper); + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + return Swiper; + +})(); diff --git a/source/vendor/swiper-bundle/swiper-bundle.min.css b/source/vendor/swiper-bundle/swiper-bundle.min.css new file mode 100644 index 0000000..7af1429 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-bundle.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-bundle.min.js b/source/vendor/swiper-bundle/swiper-bundle.min.js new file mode 100644 index 0000000..95aff9b --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function c(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function p(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let a=1;at.indexOf(e)<0));for(let t=0,a=s.length;tn?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=a(),i=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,c=e===t?t.scrollX:e.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function E(e,t){const s=[];let a=e.parentElement;for(;a;)t?a.matches(t)&&s.push(a):s.push(a),a=a.parentElement;return s}function x(e,t){t&&e.addEventListener("transitionend",(function s(a){a.target===e&&(t.call(e,a),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const a=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function T(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}function M(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}let C,P,L;function I(){return C||(C=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),C}function A(e){return void 0===e&&(e={}),P||(P=function(e){let{userAgent:t}=void 0===e?{}:e;const s=I(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!h&&(l.os="android",l.android=!0),(p||m||u)&&(l.os="ios",l.ios=!0),l}(e)),P}function z(){return L||(L=function(){const e=r(),t=A();let s=!1;function a(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(a()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,a]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&a<2}}const i=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=a();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||i&&t.ios,isWebView:i}}()),L}var $={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};const k=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const O=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const D=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},G=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},H=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const a="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=i,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+a+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&G(e,s)}))}const r=i+a-1;if(e.params.rewind||e.params.loop)for(let a=i-t;a<=r+t;a+=1){const t=(a%s+s)%s;(tr)&&G(e,t)}else for(let a=Math.max(i-t,0);a<=Math.min(r+t,s-1);a+=1)a!==i&&(a>r||a=0?x=parseFloat(x.replace("%",""))/100*r:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(a,"--swiper-centered-offset-before",""),u(a,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const I="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let a=0;a1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const a=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),i=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-r;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{m[t]=e-s})),h.forEach(((e,t)=>{h[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(a,"--swiper-centered-offset-before",-m[0]+"px"),u(a,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==E&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,a=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?a||e.el.classList.add(t):a&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let a=0;a=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&m<=t.size||u<=0&&m>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),k(o,f,s.slideVisibleClass),k(o,h,s.slideFullyVisibleClass),o.progress=i?-c:c,o.originalProgress=i?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===a)i=0,r=!0,n=!0;else{i=(e-t.minTranslate())/a;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||i<=0,n=l||i>=1,s&&(i=0),l&&(i=1)}if(s.loop){const s=t.getSlideIndexByData(0),a=t.getSlideIndexByData(t.slides.length-1),i=t.slidesGrid[s],r=t.slidesGrid[a],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=i?(o-i)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:i,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:a,activeIndex:i}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(a,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(r)if(s.loop){let t=i-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${i}"]`);else n?(o=t.filter((e=>e.column===i))[0],c=t.filter((e=>e.column===i+1))[0],d=t.filter((e=>e.column===i-1))[0]):o=t[i];o&&(n||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const a=e.nextElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const a=e.previousElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{O(e,e===o,s.slideActiveClass),O(e,e===c,s.slideNextClass),O(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:a,params:i,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,a=e.rtlTranslate?e.translate:-e.translate;let i;for(let e=0;e=t[e]&&a=t[e]&&a=t[e]&&(i=e);return s.normalizeSlideIndex&&(i<0||void 0===i)&&(i=0),i}(t)),a.indexOf(s)>=0)o=a.indexOf(s);else{const e=Math.min(i.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/i.slidesPerGroup)}if(o>=a.length&&(o=a.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&i.grid&&i.grid.rows>1;let u;if(t.virtual&&i.virtual.enabled&&i.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/i.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&H(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,a=s.params;let i=e.closest(`.${a.slideClass}, swiper-slide`);!i&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!i&&e.matches&&e.matches(`.${a.slideClass}, swiper-slide`)&&(i=e)}));let r,n=!1;if(i)for(let e=0;eo?o:a&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const i=this;if(i.destroyed)return;void 0===t&&(t=i.params.speed);const r=i.grid&&i.params.grid&&i.params.grid.rows>1;let n=e;if(i.params.loop)if(i.virtual&&i.params.virtual.enabled)n+=i.virtual.slidesBefore;else{let e;if(r){const t=n*i.params.grid.rows;e=i.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=i.getSlideIndexByData(n);const t=r?Math.ceil(i.slides.length/i.params.grid.rows):i.slides.length,{centeredSlides:s}=i.params;let l=i.params.slidesPerView;"auto"===l?l=i.slidesPerViewDynamic():(l=Math.ceil(parseFloat(i.params.slidesPerView,10)),s&&l%2==0&&(l+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=i.getSlideIndexByData(n)}return requestAnimationFrame((()=>{i.slideTo(n,t,s,a)})),i},slideNext:function(e,t,s){void 0===t&&(t=!0);const a=this,{enabled:i,params:r,animating:n}=a;if(!i||a.destroyed)return a;void 0===e&&(e=a.params.speed);let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex{a.slideTo(a.activeIndex+o,e,t,s)})),!0}return r.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const a=this,{params:i,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=a;if(!o||a.destroyed)return a;void 0===e&&(e=a.params.speed);const c=a.virtual&&i.virtual.enabled;if(i.loop){if(d&&!c&&i.loopPreventsSliding)return!1;a.loopFix({direction:"prev"}),a._clientLeft=a.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?a.translate:-a.translate),m=r.map((e=>p(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&i.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(f=f-a.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return i.loop&&0===a.activeIndex&&i.cssMode?(requestAnimationFrame((()=>{a.slideTo(f,e,t,s)})),!0):a.slideTo(f,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const a=this;if(!a.destroyed)return void 0===e&&(e=a.params.speed),a.slideTo(a.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;if(i.destroyed)return;void 0===e&&(e=i.params.speed);let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;i=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var R={loopCreate:function(e){const t=this,{params:s,slidesEl:a}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const i=()=>{f(a,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let a=0;a1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):x=r;const S="next"===a||!a,T="prev"===a||!a;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===i?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&E.push(s)})):E.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&E.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||E.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x+Math.ceil(M),0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(i){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(E.length>0&&S)if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x-C,0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?E.length/m.grid.rows:E.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:a,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const a=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;a[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),a.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function F(e,t,s){const a=r(),{params:i}=e,n=i.edgeSwipeDetection,l=i.edgeSwipeThreshold;return!n||!(s<=l||s>=a.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function q(e){const t=this,s=a();let i=e;i.originalEvent&&(i=i.originalEvent);const n=t.touchEventsData;if("pointerdown"===i.type){if(null!==n.pointerId&&n.pointerId!==i.pointerId)return;n.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(n.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void F(t,i,i.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=i.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...element.assignedElements()].includes(e);return s}(p,t.wrapperEl))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=i.composedPath?i.composedPath():i.path;u&&i.target&&i.target.shadowRoot&&m&&(p=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!i.target||!i.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=i.pageX,d.currentY=i.pageY;const g=d.currentX,v=d.currentY;if(!F(t,i,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;p.matches(n.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||i.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function V(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==i.touchId)return;if(p.pointerId!==i.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===i.touchId))[0],!c||c.identifier!==i.touchId)return}else c=p;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,m=c.pageY;if(p.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return p.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),i.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",p),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",p),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling||"touchmove"===p.type&&i.preventTouchMoveFromPointerMove)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&p.cancelable&&p.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&p.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",p),i.isMoved=!0,i.currentTranslate=g+i.startTranslate;let E=!0,x=r.resistanceRatio;if(r.touchReleaseOnEdges&&(x=0),g>0?(b&&y&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(E=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+g)**x))):g<0&&(b&&y&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function _(e){const t=this,s=t.touchEventsData;let a,i=e;i.originalEvent&&(i=i.originalEvent);if("touchend"===i.type||"touchcancel"===i.type){if(a=[...i.changedTouches].filter((e=>e.identifier===s.touchId))[0],!a||a.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(i.pointerId!==s.pointerId)return;a=i}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(i.type)){if(!(["pointercancel","contextmenu"].includes(i.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!r.simulateTouch&&"mouse"===i.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",i),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=i.path||i.composedPath&&i.composedPath();t.updateClickedSlide(e&&e[0]||i.target,e),t.emit("tap click",i),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",i)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&h=c[e])&&(g=e,v=c[c.length-1]-c[c.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-c[g])/v,E=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+E):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+E):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(i.target===t.navigation.nextEl||i.target===t.navigation.prevEl)?i.target===t.navigation.nextEl?t.slideTo(g+E):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+E),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function W(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function j(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function U(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function K(e){const t=this;D(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function Z(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const Q=(e,t)=>{const s=a(),{params:i,el:r,wrapperEl:n,device:l}=e,o=!!i.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;r&&"string"!=typeof r&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[d]("click",e.onClick,!0),i.cssMode&&n[d]("scroll",e.onScroll),i.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",W,!0):e[c]("observerUpdate",W,!0),r[d]("load",e.onLoad,{capture:!0}))};const J=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var ee={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function te(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(!0===e[a]&&(e[a]={enabled:!0}),"navigation"===a&&e[a]&&e[a].enabled&&!e[a].prevEl&&!e[a].nextEl&&(e[a].auto=!0),["pagination","scrollbar"].indexOf(a)>=0&&e[a]&&e[a].enabled&&!e[a].el&&(e[a].auto=!0),a in e&&"enabled"in i?("object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),p(t,s)):p(t,s)):p(t,s)}}const se={eventsEmitter:$,update:N,translate:X,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),B({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),B({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:Y,loop:R,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=q.bind(e),e.onTouchMove=V.bind(e),e.onTouchEnd=_.bind(e),e.onDocumentTouchStart=Z.bind(e),t.cssMode&&(e.onScroll=U.bind(e)),e.onClick=j.bind(e),e.onLoad=K.bind(e),Q(e,"on")},detachEvents:function(){Q(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:a,el:i}=e,r=a.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=J(e,a),d=J(e,l),c=e.params.grabCursor,u=l.grabCursor,m=a.enabled;o&&!d?(i.classList.remove(`${a.containerModifierClass}grid`,`${a.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(i.classList.add(`${a.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===a.grid.fill)&&i.classList.add(`${a.containerModifierClass}grid-column`),e.emitContainerClasses()),c&&!u?e.unsetGrabCursor():!c&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=a[t]&&a[t].enabled,i=l[t]&&l[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()}));const h=l.direction&&l.direction!==a.direction,f=a.loop&&(l.slidesPerView!==a.slidesPerView||h),g=a.loop;h&&s&&e.changeDirection(),p(e.params,l);const v=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),m&&!v?e.disable():!m&&v&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(f?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!g&&w?(e.loopCreate(t),e.updateSlides()):g&&!w&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,el:i,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),i.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},ae={};class ie{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const a=p({},t,{el:s});e.push(new ie(a))})),e}const l=this;l.__swiper__=!0,l.support=I(),l.device=A({userAgent:t.userAgent}),l.browser=z(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:te(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=p({},ee,o);return l.params=p({},d,ae,t),l.originalParams=p({},l.params),l.passedParams=p({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,a=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-a}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=a[l]?Math.ceil(a[l].swiperSlideSize):0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){i[l]-i[e]{t.complete&&D(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)a(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(t.length-1,0,!1,!0)}else i=e.slideTo(e.activeIndex,0,!1,!0);i||a()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${a}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(a())}return f(s,a())[0]})();return!i&&t.params.createElements&&(i=v("div",t.params.wrapperClass),s.append(i),f(s,`.${t.params.slideClass}`).forEach((e=>{i.append(e)}))),Object.assign(t,{el:s,wrapperEl:i,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:i,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(i,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?D(t,e):e.addEventListener("load",(e=>{D(t,e.target)}))})),H(t),t.initialized=!0,H(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,el:i,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i&&"string"!=typeof i&&i.removeAttribute("style"),r&&r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(a.slideVisibleClass,a.slideFullyVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){p(ae,e)}static get extendedDefaults(){return ae}static get defaults(){return ee}static installModule(e){ie.prototype.__modules__||(ie.prototype.__modules__=[]);const t=ie.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>ie.installModule(e))),ie):(ie.installModule(e),ie)}}function re(e,t,s,a){return e.params.createElements&&Object.keys(a).forEach((i=>{if(!s[i]&&!0===s.auto){let r=f(e.el,`.${a[i]}`)[0];r||(r=v("div",a[i]),r.className=a[i],e.el.append(r)),s[i]=r,t[i]=r}})),s}function ne(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function le(e){const t=this,{params:s,slidesEl:a}=t;s.loop&&t.loopDestroy();const i=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.append(t.children[0]),t.innerHTML=""}else a.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.prepend(t.children[0]),t.innerHTML=""}else i.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function me(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function he(e){let{swiper:t,duration:s,transformElements:a,allSlides:i}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a:a.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{x(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function fe(e,t,s){const a=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,i=h(t);let r=i.querySelector(`.${a.split(" ").join(".")}`);return r||(r=v("div",a.split(" ")),i.append(r)),r}Object.keys(se).forEach((e=>{Object.keys(se[e]).forEach((t=>{ie.prototype[t]=se[e][t]}))})),ie.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const a=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void i("observerUpdate",e[0]);const s=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));a.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),n.push(a)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=E(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ge=[function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=a();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];let i;return a.renderSlide?(i=a.renderSlide.call(s,e,t),"string"==typeof i&&(o.innerHTML=i,i=o.children[0])):i=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),i.setAttribute("data-swiper-slide-index",t),a.renderSlide||(i.innerHTML=e),a.cache&&(s.virtual.cache[t]=i),i}function c(e,t){const{slidesPerView:a,slidesPerGroup:i,centeredSlides:r,loop:l,initialSlide:o}=s.params;if(t&&!l&&o>0)return;const{addSlidesBefore:c,addSlidesAfter:p}=s.params.virtual,{from:u,to:m,slides:h,slidesGrid:g,offset:v}=s.virtual;s.params.cssMode||s.updateActiveIndex();const w=s.activeIndex||0;let b,y,E;b=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",r?(y=Math.floor(a/2)+i+p,E=Math.floor(a/2)+i+c):(y=a+(i-1)+p,E=(l?a:i)+c);let x=w-E,S=w+y;l||(x=Math.max(x,0),S=Math.min(S,h.length-1));let T=(s.slidesGrid[x]||0)-(s.slidesGrid[0]||0);function M(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(l&&w>=E?(x-=E,r||(T+=s.slidesGrid[0])):l&&w{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:T,from:x,to:S,slides:function(){const e=[];for(let t=x;t<=S;t+=1)e.push(h[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?M():n("virtualUpdate"));const C=[],P=[],L=e=>{let t=e;return e<0?t=h.length+e:t>=h.length&&(t-=h.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=u;e<=m;e+=1)if(eS){const t=L(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const I=l?-h.length:0,A=l?2*h.length:h.length;for(let t=I;t=x&&t<=S){const s=L(t);void 0===m||e?P.push(s):(t>m&&P.push(s),t{s.slidesEl.append(d(h[e],e))})),l)for(let e=C.length-1;e>=0;e-=1){const t=C[e];s.slidesEl.prepend(d(h[t],t))}else C.sort(((e,t)=>t-e)),C.forEach((e=>{s.slidesEl.prepend(d(h[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),M()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,c(!1,!0)})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const a=e[s],r=a.getAttribute("data-swiper-slide-index");r&&a.setAttribute("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}c(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[a]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[a],1),e[a]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===E(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,i=a.clientWidth,r=a.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(a);s&&(d.left-=a.scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||m||h)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",i)}}function c(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function p(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&c()})),i("destroy",(()=>{t.keyboard.enabled&&p()})),Object.assign(t.keyboard,{enable:c,disable:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let c,p=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-p<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),p=(new n.Date).getTime(),!1)))}function g(e){let s=e,a=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const p=n&&n.contains(s.target);if(!t.mouseEntered&&!p&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},a=c&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!p&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,a=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;c=e,u.splice(0),d=l((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{c=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const a=u.length?u[u.length-1]:void 0;if(u.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),a("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;function r(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s&&s.length>1&&1===t.el.querySelectorAll(e).length?s=t.el.querySelector(e):s&&1===s.length&&(s=s[0])),e&&!s?e:s)}function n(e,s){const a=t.params.navigation;(e=T(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...a.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](a.lockClass))}))}function l(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return n(s,!1),void n(e,!1);n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function d(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function c(){const e=t.params.navigation;if(t.params.navigation=re(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=r(e.nextEl),a=r(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:a}),s=T(s),a=T(a);const i=(s,a)=>{s&&s.addEventListener("click","next"===a?d:o),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>i(e,"next"))),a.forEach((e=>i(e,"prev")))}function p(){let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s);const a=(e,s)=>{e.removeEventListener("click","next"===s?d:o),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>a(e,"next"))),s.forEach((e=>a(e,"prev")))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null},a("init",(()=>{!1===t.params.navigation.enabled?u():(c(),l())})),a("toEdge fromEdge lock unlock",(()=>{l()})),a("destroy",(()=>{p()})),a("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s),t.enabled?l():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),a("click",((e,s)=>{let{nextEl:a,prevEl:r}=t.navigation;a=T(a),r=T(r);const n=s.target;let l=r.includes(n)||a.includes(n);if(t.isElement&&!l){const e=s.path||s.composedPath&&s.composedPath();e&&(l=e.find((e=>a.includes(e)||r.includes(e))))}if(t.params.navigation.hideOnClick&&!l){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;a.length?e=a[0].classList.contains(t.params.navigation.hiddenClass):r.length&&(e=r[0].classList.contains(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),[...a,...r].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const u=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),p()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),c(),l()},disable:u,update:l,init:c,destroy:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function d(e,s){const{bulletActiveClass:a}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${a}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${a}-${s}-${s}`))}function c(e){const s=e.target.closest(ne(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const a=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===a)return;t.slideToLoop(a)}else t.slideTo(a)}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;let a,r,c=t.pagination.el;c=T(c);const p=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,u=t.params.loop?Math.ceil(p/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,a=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(a=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,a=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const i=t.pagination.bullets;let o,p,u;if(s.dynamicBullets&&(n=S(i[0],t.isHorizontal()?"width":"height",!0),c.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=a-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(a-l,0),p=o+(Math.min(i.length,s.dynamicMainBullets)-1),u=(p+o)/2),i.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),c.length>1)i.forEach((e=>{const i=y(e);i===a?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(i>=o&&i<=p&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),i===o&&d(e,"prev"),i===p&&d(e,"next"))}));else{const e=i[a];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&i.forEach(((e,t)=>{e.setAttribute("part",t===a?"bullet-active":"bullet")})),s.dynamicBullets){const e=i[o],t=i[p];for(let e=o;e<=p;e+=1)i[e]&&i[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));d(e,"prev"),d(t,"next")}}if(s.dynamicBullets){const a=Math.min(i.length,s.dynamicMainBullets+4),r=(n*a-n)/2-u*n,l=e?"right":"left";i.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}c.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(ne(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(a+1)})),e.querySelectorAll(ne(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(u)}))),"progressbar"===s.type){let i;i=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(a+1)/u;let n=1,l=1;"horizontal"===i?n=r:l=r,e.querySelectorAll(ne(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,a+1,u),0===r&&i("paginationRender",e)):(0===r&&i("paginationRender",e),i("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let a=t.pagination.el;a=T(a);let r="";if("bullets"===e.type){let a=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&a>s&&(a=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],a.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(ne(e.bulletClass)))})),"custom"!==e.type&&i("paginationRender",a[0])}function m(){t.params.pagination=re(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>E(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=T(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),t.enabled||s.classList.add(e.lockClass)})))}function h(){const e=t.params.pagination;if(o())return;let s=t.pagination.el;s&&(s=T(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}a("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.pagination.enabled?f():(m(),u(),p())})),a("activeIndexChange",(()=>{void 0===t.snapIndex&&p()})),a("snapIndexChange",(()=>{p()})),a("snapGridLengthChange",(()=>{u(),p()})),a("destroy",(()=>{h()})),a("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),a("lock unlock",(()=>{p()})),a("click",((e,s)=>{const a=s.target,r=T(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!a.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const f=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),h()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),m(),u(),p()},disable:f,render:u,update:p,init:m,destroy:h})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const o=a();let d,c,p,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:a,el:i}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=c,o=(p-c)*n;s?(o=-o,o>0?(l=c-o,o=0):-o+c>p&&(l=p+o)):o<0?(l=c+o,o=0):o+c>p&&(l=p-o),t.isHorizontal()?(a.style.transform=`translate3d(${o}px, 0, 0)`,a.style.width=`${l}px`):(a.style.transform=`translate3d(0px, ${o}px, 0)`,a.style.height=`${l}px`),r.hide&&(clearTimeout(h),i.style.opacity=1,h=setTimeout((()=>{i.style.opacity=0,i.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:a}=e;s.style.width="",s.style.height="",p=t.isHorizontal()?a.offsetWidth:a.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),c="auto"===t.params.scrollbar.dragSize?p*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${c}px`:s.style.height=`${c}px`,a.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function E(e){const{scrollbar:s,rtlTranslate:a}=t,{el:i}=s;let r;r=(y(e)-w(i)[t.isHorizontal()?"left":"top"]-(null!==d?d:c/2))/(p-c),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n,dragEl:l}=a;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.style.transitionDuration="100ms",l.style.transitionDuration="100ms",E(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:a}=t,{el:i,dragEl:n}=s;m&&(e.preventDefault&&e.cancelable?e.preventDefault():e.returnValue=!1,E(e),a.style.transitionDuration="0ms",i.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function M(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n}=a;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",i.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,params:a}=t,i=s.el;if(!i)return;const r=i,n=!!a.passiveListeners&&{passive:!1,capture:!1},l=!!a.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",x,n),o[d]("pointermove",S,n),o[d]("pointerup",M,l)}function P(){const{scrollbar:e,el:s}=t;t.params.scrollbar=re(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i,r;if("string"==typeof a.el&&t.isElement&&(i=t.el.querySelector(a.el)),i||"string"!=typeof a.el)i||(i=a.el);else if(i=o.querySelectorAll(a.el),!i.length)return;t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.querySelectorAll(a.el).length&&(i=s.querySelector(a.el)),i.length>0&&(i=i[0]),i.classList.add(t.isHorizontal()?a.horizontalClass:a.verticalClass),i&&(r=i.querySelector(ne(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),i.append(r))),Object.assign(e,{el:i,dragEl:r}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),i&&i.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function L(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},i("changeDirection",(()=>{if(!t.scrollbar||!t.scrollbar.el)return;const e=t.params.scrollbar;let{el:s}=t.scrollbar;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),i("init",(()=>{!1===t.params.scrollbar.enabled?I():(P(),b(),g())})),i("update resize observerUpdate lock unlock changeDirection",(()=>{b()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),i("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),i("destroy",(()=>{L()}));const I=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),L()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),P(),b(),g()},disable:I,updateSize:b,setTranslate:g,init:P,destroy:L})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:a}=t,i=a?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),c=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*i+"%":n*s*i+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let p=`translate3d(${n}, ${l}, 0px)`;if(null!=o){p+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(c&&null!=c){p+=` rotate(${c*s*-1}deg)`}e.style.transform=p},n=()=>{const{el:e,slides:s,progress:a,snapGrid:n,isElement:l}=t,o=f(e,i);t.isElement&&o.push(...f(t.hostEl,i)),o.forEach((e=>{r(e,a)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-a*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${i}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&n()})),a("setTranslate",(()=>{t.params.parallax.enabled&&n()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:a}=t,r=[...s.querySelectorAll(i)];t.isElement&&r.push(...a.querySelectorAll(i)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c=1,p=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v,b=1;function y(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,a=u[1].pageY;return Math.sqrt((s-e)**2+(a-t)**2)}function x(){const e=t.params.zoom,s=m.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&m.imageEl&&m.imageEl.naturalWidth){const e=m.imageEl.naturalWidth/m.imageEl.offsetWidth;return Math.min(e,s)}return s}function S(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function T(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!S(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=y(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let a=m.slideEl.querySelector(`.${s.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=a,m.imageWrapEl=a?E(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=x()}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/c,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/c]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}p=!0}}function M(e){if(!S(e))return;const s=t.params.zoom,a=t.zoom,i=u.findIndex((t=>t.pointerId===e.pointerId));i>=0&&(u[i]=e),u.length<2||(o=!0,m.scaleMove=y(),m.imageEl&&(a.scale=m.scaleMove/m.scaleStart*c,a.scale>m.maxRatio&&(a.scale=m.maxRatio-1+(a.scale-m.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));i>=0&&u.splice(i,1),l&&o&&(l=!1,o=!1,m.imageEl&&(a.scale=Math.max(Math.min(a.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,c=a.scale,p=!1,a.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):a.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===a.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function P(){t.touchEventsData.preventTouchMoveFromPointerMove=!1}function L(e){if(!S(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth||m.imageEl.clientWidth,h.height=m.imageEl.offsetHeight||m.imageEl.clientHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const a=h.width*s.scale,i=h.height*s.scale;h.minX=Math.min(m.slideWidth/2-a/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-i/2,0),h.maxY=-h.minY,h.touchesCurrent.x=u.length>0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!p){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return h.isTouched=!1,void P();if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return h.isTouched=!1,void P()}e.cancelable&&e.preventDefault(),e.stopPropagation(),clearTimeout(v),t.touchEventsData.preventTouchMoveFromPointerMove=!0,v=setTimeout((()=>{P()})),h.isMoved=!0;const r=(s.scale-c)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function I(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,c=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function A(e){const s=t.zoom,a=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${a.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?E(m.imageEl,`.${a.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let i,r,l,o,d,p,u,g,v,b,y,S,T,M,C,P,L,I;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(i=e.pageX,r=e.pageY):(i=h.touchesStart.x,r=h.touchesStart.y);const A="number"==typeof e?e:null;1===c&&A&&(i=void 0,r=void 0);const z=x();s.scale=A||z,c=A||z,!e||1===c&&A?(u=0,g=0):(L=m.slideEl.offsetWidth,I=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+L/2-i,p=o+I/2-r,v=m.imageEl.offsetWidth||m.imageEl.clientWidth,b=m.imageEl.offsetHeight||m.imageEl.clientHeight,y=v*s.scale,S=b*s.scale,T=Math.min(L/2-y/2,0),M=Math.min(I/2-S/2,0),C=-T,P=-M,u=d*s.scale,g=p*s.scale,uC&&(u=C),gP&&(g=P)),A&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function z(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?E(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,c=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function $(e){const s=t.zoom;s.scale&&1!==s.scale?z():A(e)}function k(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:a}=k();t.wrapperEl.addEventListener("pointerdown",T,s),t.wrapperEl.addEventListener("pointermove",M,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,C,s)})),t.wrapperEl.addEventListener("pointermove",L,a)}function D(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:a}=k();t.wrapperEl.removeEventListener("pointerdown",T,s),t.wrapperEl.removeEventListener("pointermove",M,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,C,s)})),t.wrapperEl.removeEventListener("pointermove",L,a)}Object.defineProperty(t.zoom,"scale",{get:()=>b,set(e){if(b!==e){const t=m.imageEl,s=m.slideEl;i("zoomChange",e,t,s)}b=e}}),a("init",(()=>{t.params.zoom.enabled&&O()})),a("destroy",(()=>{D()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const a=u.length>0?u[0]:e;h.touchesStart.x=a.pageX,h.touchesStart.y=a.pageY}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,a=300;const i=g.x*s,r=h.currentX+i,n=g.y*a,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,a);h.currentX=r,h.currentY=l;const d=h.width*e.scale,c=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-c/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&$(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&I()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&I()})),Object.assign(t.zoom,{enable:O,disable:D,in:A,out:z,toggle:$})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){("string"==typeof t.params.controller.control?[...document.querySelectorAll(t.params.controller.control)]:[t.params.controller.control]).forEach((e=>{if(t.controller.control||(t.controller.control=[]),e&&e.swiper)t.controller.control.push(e.swiper);else if(e){const s=`${t.params.eventsPrefix}init`,a=i=>{t.controller.control.push(i.detail[0]),t.update(),e.removeEventListener(s,a)};e.addEventListener(s,a)}}))}else t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e{s.updateAutoHeight()})),x(s.wrapperEl,(()=>{i&&s.transitionEnd()}))))}if(Array.isArray(i))for(r=0;r{e.setAttribute("tabIndex","0")}))}function p(e){(e=T(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function u(e,t){(e=T(e)).forEach((e=>{e.setAttribute("role",t)}))}function m(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function h(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function f(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function g(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function w(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=e.target;if(!t.pagination||!t.pagination.el||a!==t.pagination.el&&!t.pagination.el.contains(e.target)||e.target.matches(ne(t.params.pagination.bulletClass))){if(t.navigation&&t.navigation.prevEl&&t.navigation.nextEl){const e=T(t.navigation.prevEl);T(t.navigation.nextEl).includes(a)&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?d(s.lastSlideMessage):d(s.nextSlideMessage)),e.includes(a)&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?d(s.firstSlideMessage):d(s.prevSlideMessage))}t.pagination&&a.matches(ne(t.params.pagination.bulletClass))&&a.click()}}function b(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function E(){return b()&&t.params.pagination.clickable}const x=(e,t,s)=>{c(e),"BUTTON"!==e.tagName&&(u(e,"button"),e.addEventListener("keydown",w)),h(e,s),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},S=e=>{n&&n!==e.target&&!n.contains(e.target)&&(r=!0),t.a11y.clicked=!0},M=()=>{r=!1,requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},C=e=>{o=(new Date).getTime()},P=e=>{if(t.a11y.clicked||!t.params.a11y.scrollOnFocus)return;if((new Date).getTime()-o<100)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;n=s;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,requestAnimationFrame((()=>{r||(t.params.loop?t.slideToLoop(parseInt(s.getAttribute("data-swiper-slide-index")),0):t.slideTo(t.slides.indexOf(s),0),r=!1)})))},L=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&m(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&u(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((a,i)=>{const r=t.params.loop?parseInt(a.getAttribute("data-swiper-slide-index"),10):i;h(a,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},I=()=>{const e=t.params.a11y;t.el.append(l);const s=t.el;e.containerRoleDescriptionMessage&&m(s,e.containerRoleDescriptionMessage),e.containerMessage&&h(s,e.containerMessage);const i=t.wrapperEl,r=e.id||i.getAttribute("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,T(i).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(i,o),L();let{nextEl:c,prevEl:p}=t.navigation?t.navigation:{};if(c=T(c),p=T(p),c&&c.forEach((t=>x(t,r,e.nextSlideMessage))),p&&p.forEach((t=>x(t,r,e.prevSlideMessage))),E()){T(t.pagination.el).forEach((e=>{e.addEventListener("keydown",w)}))}a().addEventListener("visibilitychange",C),t.el.addEventListener("focus",P,!0),t.el.addEventListener("focus",P,!0),t.el.addEventListener("pointerdown",S,!0),t.el.addEventListener("pointerup",M,!0)};i("beforeInit",(()=>{l=v("span",t.params.a11y.notificationClass),l.setAttribute("aria-live","assertive"),l.setAttribute("aria-atomic","true")})),i("afterInit",(()=>{t.params.a11y.enabled&&I()})),i("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&L()})),i("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(f(s),p(s)):(g(s),c(s))),e&&(t.isEnd?(f(e),p(e)):(g(e),c(e)))}()})),i("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;b()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(c(s),t.params.pagination.renderBullet||(u(s,"button"),h(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(ne(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),i("destroy",(()=>{t.params.a11y.enabled&&function(){l&&l.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=T(e),s=T(s),e&&e.forEach((e=>e.removeEventListener("keydown",w))),s&&s.forEach((e=>e.removeEventListener("keydown",w))),E()&&T(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",w)}));a().removeEventListener("visibilitychange",C),t.el&&"string"!=typeof t.el&&(t.el.removeEventListener("focus",P,!0),t.el.removeEventListener("pointerdown",S,!0),t.el.removeEventListener("pointerup",M,!0))}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${s}"]`):t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),n.key||n.value?(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p)):t.params.history.replaceState||e.addEventListener("popstate",p)}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const c=()=>{i("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},p=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),i("hashSet")):(o.location.hash=s||"",i("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,a=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(a||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",c)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",c)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&p()})),n("slideChange",(()=>{l&&t.params.cssMode&&p()}))},function(e){let t,s,{swiper:i,extendParams:r,on:n,emit:l,params:o}=e;i.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,c,p,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){i&&!i.destroyed&&i.wrapperEl&&e.target===i.wrapperEl&&(i.wrapperEl.removeEventListener("transitionend",y),g||e.detail&&e.detail.bySwiperTouchMove||C())}const E=()=>{if(i.destroyed||!i.autoplay.running)return;i.autoplay.paused?c=!0:c&&(w=d,c=!1);const e=i.autoplay.paused?d:b+w-(new Date).getTime();i.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{E()}))},x=e=>{if(i.destroyed||!i.autoplay.running)return;cancelAnimationFrame(s),E();let a=void 0===e?i.params.autoplay.delay:e;v=i.params.autoplay.delay,w=i.params.autoplay.delay;const r=(()=>{let e;if(e=i.virtual&&i.params.virtual.enabled?i.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:i.slides[i.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(a=r,v=r,w=r),d=a;const n=i.params.speed,o=()=>{i&&!i.destroyed&&(i.params.autoplay.reverseDirection?!i.isBeginning||i.params.loop||i.params.rewind?(i.slidePrev(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(i.slides.length-1,n,!0,!0),l("autoplay")):!i.isEnd||i.params.loop||i.params.rewind?(i.slideNext(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(0,n,!0,!0),l("autoplay")),i.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{x()}))))};return a>0?(clearTimeout(t),t=setTimeout((()=>{o()}),a)):requestAnimationFrame((()=>{o()})),a},S=()=>{b=(new Date).getTime(),i.autoplay.running=!0,x(),l("autoplayStart")},T=()=>{i.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(i.destroyed||!i.autoplay.running)return;clearTimeout(t),e||(f=!0);const a=()=>{l("autoplayPause"),i.params.autoplay.waitForTransition?i.wrapperEl.addEventListener("transitionend",y):C()};if(i.autoplay.paused=!0,s)return h&&(d=i.params.autoplay.delay),h=!1,void a();const r=d||i.params.autoplay.delay;d=r-((new Date).getTime()-b),i.isEnd&&d<0&&!i.params.loop||(d<0&&(d=0),a())},C=()=>{i.isEnd&&d<0&&!i.params.loop||i.destroyed||!i.autoplay.running||(b=(new Date).getTime(),f?(f=!1,x(d)):x(),i.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(i.destroyed||!i.autoplay.running)return;const e=a();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,i.animating||i.autoplay.paused||M(!0))},I=e=>{"mouse"===e.pointerType&&(g=!1,i.autoplay.paused&&C())};n("init",(()=>{i.params.autoplay.enabled&&(i.params.autoplay.pauseOnMouseEnter&&(i.el.addEventListener("pointerenter",L),i.el.addEventListener("pointerleave",I)),a().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{i.el&&"string"!=typeof i.el&&(i.el.removeEventListener("pointerenter",L),i.el.removeEventListener("pointerleave",I)),a().removeEventListener("visibilitychange",P),i.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{i.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!i.destroyed&&i.autoplay.running&&(s||!i.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!i.destroyed&&i.autoplay.running&&(i.params.autoplay.disableOnInteraction?T():(p=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!i.destroyed&&i.autoplay.running&&p){if(clearTimeout(m),clearTimeout(t),i.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&i.params.cssMode&&C(),u=!1,p=!1}})),n("slideChange",(()=>{!i.destroyed&&i.autoplay.running&&(h=!0)})),Object.assign(i.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&a.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;i=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(i):t.slideTo(i)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(c(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let i=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>i?r-Math.floor(a/2)+1:r+Math.floor(a/2)-1:r>i&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},i("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=a(),i=()=>{const a="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(a&&a.swiper)e.swiper=a.swiper,o(),d(!0);else if(a){const s=`${t.params.eventsPrefix}init`,i=r=>{e.swiper=r.detail[0],a.removeEventListener(s,i),o(),d(!0),e.swiper.update(),t.update()};a.addEventListener(s,i)}return a},r=()=>{if(t.destroyed)return;i()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),i("slideChange update resize observerUpdate",(()=>{d()})),i("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),i("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:c}=t,p=o()-c.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=c.velocities.pop(),s=c.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,c.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let p=t.translate+s;l&&(p=-p);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(pt.minTranslate())r.freeMode.momentumBounce?(p-t.minTranslate()>h&&(p=t.minTranslate()+h),u=t.minTranslate(),m=!0,c.allowMomentumBounce=!0):p=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-p){e=t;break}p=Math.abs(d[e]-p){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-p-t.translate)/t.velocity):Math.abs((p-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-p:p)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&c.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(p),t.setTransition(e),t.setTranslate(p),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(p),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||p>=r.longSwipesMs)&&(a("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,i,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{i=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;i&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,r.emitContainerClasses()):!i&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),i=s})),r.grid={initSlides:e=>{const{slidesPerView:i}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;a=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==i&&"row"===l&&(t=Math.max(t,i*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,i,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:c,fill:p}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===p&&l>1){const s=Math.floor(e/(l*c)),a=e-c*l*s,r=0===s?l:Math.min(Math.ceil((u-s*c*l)/c),l);f=Math.floor(a/r),h=a-f*r+s*l,m=h+f*t/c,i.style.order=m}else"column"===p?(h=Math.floor(e/c),f=e-h*c,(h>a||h===a&&f===c-1)&&(f+=1,f>=c&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);i.row=f,i.column=h,i.style.height=`calc((100% - ${(c-1)*d}px) / ${c})`,i.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",i.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:a,roundLengths:i}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),a){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(i)),a&&(a.style.opacity=Math.max(-t,0)),i&&(i.style.opacity=Math.max(t,0))};ue({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,c=M(t),p=t.params.cubeEffect,u=t.isHorizontal(),m=t.virtual&&t.params.virtual.enabled;let h,f=0;p.shadow&&(u?(h=t.wrapperEl.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),t.wrapperEl.append(h)),h.style.height=`${r}px`):(h=e.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),e.append(h))));for(let e=0;e-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.style.transform=w,p.slideShadows&&i(t,d,u)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,p.shadow)if(u)h.style.transform=`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${p.shadowScale})`;else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,i=p.shadowOffset;h.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-89.99deg)`}const g=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${g}px) rotateX(${c(t.isHorizontal()?0:f)}deg) rotateY(${c(t.isHorizontal()?-f:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const i=(e,s)=>{let a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=fe("flip",e,t.isHorizontal()?"left":"top")),i||(i=fe("flip",e,t.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),i&&(i.style.opacity=Math.max(s,0))};ue({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect,r=M(t);for(let n=0;n{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),i(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),ue({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth,p=M(t);for(let e=0,t=a.length;e0?u:0),s&&(s.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;ue({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides,o=M(t);if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(g=r.prev,f=!0),m.forEach(((e,t)=>{m[t]=`calc(${e}px + (${i(g.translate[t])} * ${Math.abs(c*n)}))`})),h.forEach(((e,t)=>{let s=g.rotate[t]*Math.abs(c*n);h[t]=s})),a.style.zIndex=-Math.abs(Math.round(d))+e.length;const v=m.join(", "),w=`rotateX(${o(h[0])}deg) rotateY(${o(h[1])}deg) rotateZ(${o(h[2])}deg)`,b=p<0?`scale(${1+(1-g.scale)*p*n})`:`scale(${1-(1-g.scale)*p*n})`,y=p<0?1+(1-g.opacity)*p*n:1-(1-g.opacity)*p*n,E=`translate3d(${v}) ${w} ${b}`;if(f&&g.shadow||!f){let e=a.querySelector(".swiper-slide-shadow");if(!e&&g.shadow&&(e=fe("creative",a)),e){const t=r.shadowPerProgress?c*(1/r.limitProgress):c;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const x=me(0,a);x.style.transform=E,x.style.opacity=y,g.origin&&(x.style.transformOrigin=g.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),ue({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:a}=t,i=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=a?-t.translate:t.translate;for(let o=0;o0&&p<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||E){const e=(1-Math.abs((Math.abs(p)-.5)/.5))**.5;v+=-28*p*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(p)+"%"}if(m=p<0?`calc(${m}px ${a?"-":"+"} (${w*Math.abs(p)}%))`:p>0?`calc(${m}px ${a?"-":"+"} (-${w*Math.abs(p)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const x=p<0?""+(1+(1-g)*p):""+(1-(1-g)*p),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${i.rotate?a?-v:v:0}deg)\n scale(${x})\n `;if(i.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=fe("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(p)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(c))+e.length;me(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return ie.use(ge),ie}(); +//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-bundle.min.js.map b/source/vendor/swiper-bundle/swiper-bundle.min.js.map new file mode 100644 index 0000000..2d2fa90 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","support","deviceCached","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","find","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-bundle.min.mjs b/source/vendor/swiper-bundle/swiper-bundle.min.mjs new file mode 100644 index 0000000..f49fcbd --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import Virtual from"./modules/virtual.min.mjs";import Keyboard from"./modules/keyboard.min.mjs";import Mousewheel from"./modules/mousewheel.min.mjs";import Navigation from"./modules/navigation.min.mjs";import Pagination from"./modules/pagination.min.mjs";import Scrollbar from"./modules/scrollbar.min.mjs";import Parallax from"./modules/parallax.min.mjs";import Zoom from"./modules/zoom.min.mjs";import Controller from"./modules/controller.min.mjs";import A11y from"./modules/a11y.min.mjs";import History from"./modules/history.min.mjs";import HashNavigation from"./modules/hash-navigation.min.mjs";import Autoplay from"./modules/autoplay.min.mjs";import Thumb from"./modules/thumbs.min.mjs";import freeMode from"./modules/free-mode.min.mjs";import Grid from"./modules/grid.min.mjs";import Manipulation from"./modules/manipulation.min.mjs";import EffectFade from"./modules/effect-fade.min.mjs";import EffectCube from"./modules/effect-cube.min.mjs";import EffectFlip from"./modules/effect-flip.min.mjs";import EffectCoverflow from"./modules/effect-coverflow.min.mjs";import EffectCreative from"./modules/effect-creative.min.mjs";import EffectCards from"./modules/effect-cards.min.mjs";const modules=[Virtual,Keyboard,Mousewheel,Navigation,Pagination,Scrollbar,Parallax,Zoom,Controller,A11y,History,HashNavigation,Autoplay,Thumb,freeMode,Grid,Manipulation,EffectFade,EffectCube,EffectFlip,EffectCoverflow,EffectCreative,EffectCards];Swiper.use(modules);export{Swiper,Swiper as default}; +//# sourceMappingURL=swiper-bundle.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-bundle.min.mjs.map b/source/vendor/swiper-bundle/swiper-bundle.min.mjs.map new file mode 100644 index 0000000..00ccec7 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.mjs.mjs","names":["Swiper","Virtual","Keyboard","Mousewheel","Navigation","Pagination","Scrollbar","Parallax","Zoom","Controller","A11y","History","HashNavigation","Autoplay","Thumb","freeMode","Grid","Manipulation","EffectFade","EffectCube","EffectFlip","EffectCoverflow","EffectCreative","EffectCards","modules","use"],"sources":["0"],"mappings":";;;;;;;;;;;;YAYcA,WAAc,sCACrBC,YAAa,mCACbC,aAAc,oCACdC,eAAgB,sCAChBC,eAAgB,sCAChBC,eAAgB,sCAChBC,cAAe,qCACfC,aAAc,oCACdC,SAAU,gCACVC,eAAgB,sCAChBC,SAAU,gCACVC,YAAa,mCACbC,mBAAoB,2CACpBC,aAAc,oCACdC,UAAW,kCACXC,aAAc,qCACdC,SAAU,gCACVC,iBAAkB,wCAClBC,eAAgB,uCAChBC,eAAgB,uCAChBC,eAAgB,uCAChBC,oBAAqB,4CACrBC,mBAAoB,2CACpBC,gBAAiB,iCAGxB,MAAMC,QAAU,CAACvB,QAASC,SAAUC,WAAYC,WAAYC,WAAYC,UAAWC,SAAUC,KAAMC,WAAYC,KAAMC,QAASC,eAAgBC,SAAUC,MAAOC,SAAUC,KAAMC,aAAcC,WAAYC,WAAYC,WAAYC,gBAAiBC,eAAgBC,aAClQvB,OAAOyB,IAAID,gBAEFxB,OAAQA"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-bundle.mjs b/source/vendor/swiper-bundle/swiper-bundle.mjs new file mode 100644 index 0000000..e7cb018 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-bundle.mjs @@ -0,0 +1,42 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import Virtual from './modules/virtual.mjs'; +import Keyboard from './modules/keyboard.mjs'; +import Mousewheel from './modules/mousewheel.mjs'; +import Navigation from './modules/navigation.mjs'; +import Pagination from './modules/pagination.mjs'; +import Scrollbar from './modules/scrollbar.mjs'; +import Parallax from './modules/parallax.mjs'; +import Zoom from './modules/zoom.mjs'; +import Controller from './modules/controller.mjs'; +import A11y from './modules/a11y.mjs'; +import History from './modules/history.mjs'; +import HashNavigation from './modules/hash-navigation.mjs'; +import Autoplay from './modules/autoplay.mjs'; +import Thumb from './modules/thumbs.mjs'; +import freeMode from './modules/free-mode.mjs'; +import Grid from './modules/grid.mjs'; +import Manipulation from './modules/manipulation.mjs'; +import EffectFade from './modules/effect-fade.mjs'; +import EffectCube from './modules/effect-cube.mjs'; +import EffectFlip from './modules/effect-flip.mjs'; +import EffectCoverflow from './modules/effect-coverflow.mjs'; +import EffectCreative from './modules/effect-creative.mjs'; +import EffectCards from './modules/effect-cards.mjs'; + +// Swiper Class +const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; +Swiper.use(modules); + +export { Swiper, Swiper as default }; diff --git a/source/vendor/swiper-bundle/swiper-effect-utils.d.ts b/source/vendor/swiper-bundle/swiper-effect-utils.d.ts new file mode 100644 index 0000000..aaee39d --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-effect-utils.d.ts @@ -0,0 +1,28 @@ +import { Swiper, SwiperOptions } from './types/index.d.ts'; + +declare const createShadow: (suffix?: string, slideEl: HTMLElement, side?: string) => HTMLElement; + +declare const effectInit: (params: { + effect: string; + swiper: Swiper; + on: () => void; + setTranslate: () => void; + setTransition: (duration: number) => void; + overwriteParams?: () => SwiperOptions; + perspective?: () => boolean; + recreateShadows?: () => void; + getEffectParams?: () => { slideShadows?: boolean }; +}) => void; + +declare const effectTarget: (effectParams: any, slideEl: HTMLElement) => void; + +declare const effectVirtualTransitionEnd: (params: { + swiper: Swiper; + duration: number; + transformElements: HTMLElement[]; + allSlides?: boolean; +}) => void; + +declare const getSlideTransformEl: (slideEl: HTMLElement) => void; + +export { createShadow, effectInit, effectTarget, effectVirtualTransitionEnd, getSlideTransformEl }; diff --git a/source/vendor/swiper-bundle/swiper-effect-utils.min.mjs b/source/vendor/swiper-bundle/swiper-effect-utils.min.mjs new file mode 100644 index 0000000..3876027 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-effect-utils.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +export{c as createShadow}from"./shared/create-shadow.min.mjs";export{e as effectInit}from"./shared/effect-init.min.mjs";export{e as effectTarget}from"./shared/effect-target.min.mjs";export{e as effectVirtualTransitionEnd}from"./shared/effect-virtual-transition-end.min.mjs";export{g as getSlideTransformEl}from"./shared/utils.min.mjs"; +//# sourceMappingURL=swiper-effect-utils.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-effect-utils.min.mjs.map b/source/vendor/swiper-bundle/swiper-effect-utils.min.mjs.map new file mode 100644 index 0000000..538571b --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-effect-utils.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-effect-utils.mjs.mjs","names":["c","e","g"],"sources":["0"],"mappings":";;;;;;;;;;;;OAYSA,sBAAyB,wCACzBC,oBAAuB,sCACvBA,sBAAyB,wCACzBA,oCAAuC,wDACvCC,6BAAgC"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-effect-utils.mjs b/source/vendor/swiper-bundle/swiper-effect-utils.mjs new file mode 100644 index 0000000..617a784 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-effect-utils.mjs @@ -0,0 +1,17 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +export { c as createShadow } from './shared/create-shadow.mjs'; +export { e as effectInit } from './shared/effect-init.mjs'; +export { e as effectTarget } from './shared/effect-target.mjs'; +export { e as effectVirtualTransitionEnd } from './shared/effect-virtual-transition-end.mjs'; +export { g as getSlideTransformEl } from './shared/utils.mjs'; diff --git a/source/vendor/swiper-bundle/swiper-element-bundle.js b/source/vendor/swiper-bundle/swiper-element-bundle.js new file mode 100644 index 0000000..4f53ddb --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element-bundle.js @@ -0,0 +1,10262 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); + } + function getRotateFix(swiper) { + return v => { + if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { + return v + 0.001; + } + return v; + }; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + tempDOM.innerHTML = slideEl; + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + slideEl.innerHTML = slide; + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force, beforeInit) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides, + loop: isLoop, + initialSlide + } = swiper.params; + if (beforeInit && !isLoop && initialSlide > 0) { + return; + } + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(false, true); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } else if (res && res.length === 1) { + res = res[0]; + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); + if (swiper.isElement && !targetIsButton) { + const path = e.path || e.composedPath && e.composedPath(); + if (path) { + targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); + } + } + if (swiper.params.navigation.hideOnClick && !targetIsButton) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + let allowTouchMoveTimeout; + function allowTouchMove() { + swiper.touchEventsData.preventTouchMoveFromPointerMove = false; + } + function preventTouchMove() { + clearTimeout(allowTouchMoveTimeout); + swiper.touchEventsData.preventTouchMoveFromPointerMove = true; + allowTouchMoveTimeout = setTimeout(() => { + allowTouchMove(); + }); + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { + return; + } + const zoom = swiper.zoom; + if (!gesture.imageEl) { + return; + } + if (!image.isTouched || !gesture.slideEl) { + return; + } + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + allowTouchMove(); + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + allowTouchMove(); + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + preventTouchMove(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; + controlElements.forEach(controlElement => { + if (!swiper.controller.control) swiper.controller.control = []; + if (controlElement && controlElement.swiper) { + swiper.controller.control.push(controlElement.swiper); + } else if (controlElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onControllerSwiper = e => { + swiper.controller.control.push(e.detail[0]); + swiper.update(); + controlElement.removeEventListener(eventName, onControllerSwiper); + }; + controlElement.addEventListener(eventName, onControllerSwiper); + } + }); + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null, + scrollOnFocus: true + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + let preventFocusHandler; + let focusTargetSlideEl; + let visibilityChangedTimestamp = new Date().getTime(); + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { + const prevEls = makeElementsArray(swiper.navigation.prevEl); + const nextEls = makeElementsArray(swiper.navigation.nextEl); + if (nextEls.includes(targetEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (prevEls.includes(targetEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = e => { + if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { + preventFocusHandler = true; + } + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + preventFocusHandler = false; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const onVisibilityChange = e => { + visibilityChangedTimestamp = new Date().getTime(); + }; + const handleFocus = e => { + if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; + if (new Date().getTime() - visibilityChangedTimestamp < 100) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + focusTargetSlideEl = slideEl; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + requestAnimationFrame(() => { + if (preventFocusHandler) return; + if (swiper.params.loop) { + swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); + } else { + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + } + preventFocusHandler = false; + }); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + // Tab focus + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + } + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject$1(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener(eventName, onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener(eventName, onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const r = getRotateFix(swiper); + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + const rotateFix = getRotateFix(swiper); + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + const r = getRotateFix(swiper); + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + const rotateFix = getRotateFix(swiper); + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + /* underscore in name -> watch for changes */ + const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const arrowSvg = ` + `; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/source/vendor/swiper-bundle/swiper-element-bundle.min.js b/source/vendor/swiper-bundle/swiper-element-bundle.min.js new file mode 100644 index 0000000..955fd29 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((a=>{void 0===s[a]?s[a]=i[a]:e(i[a])&&e(s[a])&&Object.keys(i[a]).length>0&&t(s[a],i[a])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const a={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,a),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let i,a,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(a=l.transform||l.webkitTransform,a.split(",").length>6&&(a=a.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===a?"":a)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=n.toString().split(",")),"x"===t&&(a=s.WebKitCSSMatrix?n.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(a=s.WebKitCSSMatrix?n.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),a||0}function p(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;tn?"next":"prev",c=(e,t)=>"next"===p&&e>=t||"prev"===p&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let p=n+r*(s-n);if(c(p,s)&&(p=s),t.wrapperEl.scrollTo({[i]:p}),c(p,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:p})})),void a.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=a.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=i(),a=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,p=e===t?t.scrollX:e.scrollLeft;return{top:a.top+d-l,left:a.left+p-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function x(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}function E(e,t){t&&e.addEventListener("transitionend",(function s(i){i.target===e&&(t.call(e,i),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const i=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function T(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}function M(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}let C,P,L;function z(){return C||(C=function(){const e=r(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),C}function k(e){return void 0===e&&(e={}),P||(P=function(e){let{userAgent:t}=void 0===e?{}:e;const s=z(),i=r(),a=i.navigator.platform,n=t||i.navigator.userAgent,l={ios:!1,android:!1},o=i.screen.width,d=i.screen.height,p=n.match(/(Android);?[\s\/]+([\d.]+)?/);let c=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!c&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===a;let f="MacIntel"===a;return!c&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(c=n.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),f=!1),p&&!h&&(l.os="android",l.android=!0),(c||m||u)&&(l.os="ios",l.ios=!0),l}(e)),P}function A(){return L||(L=function(){const e=r(),t=k();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const a=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=i();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||a&&t.ios,isWebView:a}}()),L}var $={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const a=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][a](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function a(){i.off(e,a),a.__emitterProxy&&delete a.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,a)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(a,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var a=arguments.length,r=new Array(a),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const I=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const O=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const D=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},_=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},G=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),a=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=a,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&_(e,s)}))}const r=a+i-1;if(e.params.rewind||e.params.loop)for(let i=a-t;i<=r+t;i+=1){const t=(i%s+s)%s;(tr)&&_(e,t)}else for(let i=Math.max(a-t,0);i<=Math.min(r+t,s-1);i+=1)i!==a&&(i>r||i=0?E=parseFloat(E.replace("%",""))/100*r:"string"==typeof E&&(E=parseFloat(E)),e.virtualSize=-E,p.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(i,"--swiper-centered-offset-before",""),u(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(p):e.grid&&e.grid.unsetSlides();const z="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+E;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),a=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==p.length-1)).forEach((e=>{e.style[t]=`${E}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(E||0)})),e-=E;const t=e-r;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(E||0)})),e-=E;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{m[t]=e-s})),h.forEach(((e,t)=>{h[t]=e+s}))}}if(Object.assign(e,{slides:p,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(i,"--swiper-centered-offset-before",-m[0]+"px"),u(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(c!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==x&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);c<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let a,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(a=0;at.slides.length&&!i)break;s.push(n(e))}else s.push(n(t.activeIndex));for(a=0;ar?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&m<=t.size||u<=0&&m>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),I(o,f,s.slideVisibleClass),I(o,h,s.slideFullyVisibleClass),o.progress=a?-p:p,o.originalProgress=a?-c:c}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:a,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===i)a=0,r=!0,n=!0;else{a=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||a<=0,n=l||a>=1,s&&(a=0),l&&(a=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),a=t.slidesGrid[s],r=t.slidesGrid[i],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=a?(o-a)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:a,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",a)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:a}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,p;if(r)if(s.loop){let t=a-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${a}"]`);else n?(o=t.filter((e=>e.column===a))[0],p=t.filter((e=>e.column===a+1))[0],d=t.filter((e=>e.column===a-1))[0]):o=t[a];o&&(n||(p=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!p&&(p=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{O(e,e===o,s.slideActiveClass),O(e,e===p,s.slideNextClass),O(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:a,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const p=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let a;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(a=e);return s.normalizeSlideIndex&&(a<0||void 0===a)&&(a=0),a}(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(a.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/a.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=p(d));const c=t.grid&&a.grid&&a.grid.rows>1;let u;if(t.virtual&&a.virtual.enabled&&a.loop)u=p(d);else if(c){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/a.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&G(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let a=e.closest(`.${i.slideClass}, swiper-slide`);!a&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!a&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(a=e)}));let r,n=!1;if(a)for(let e=0;eo?o:i&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==c){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(c||0)!==n)return!1}let b;if(n!==(p||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>c?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,i),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const a=this;if(a.destroyed)return;void 0===t&&(t=a.params.speed);const r=a.grid&&a.params.grid&&a.params.grid.rows>1;let n=e;if(a.params.loop)if(a.virtual&&a.params.virtual.enabled)n+=a.virtual.slidesBefore;else{let e;if(r){const t=n*a.params.grid.rows;e=a.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=a.getSlideIndexByData(n);const t=r?Math.ceil(a.slides.length/a.params.grid.rows):a.slides.length,{centeredSlides:s}=a.params;let l=a.params.slidesPerView;"auto"===l?l=a.slidesPerViewDynamic():(l=Math.ceil(parseFloat(a.params.slidesPerView,10)),s&&l%2==0&&(l+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=a.getSlideIndexByData(n)}return requestAnimationFrame((()=>{a.slideTo(n,t,s,i)})),a},slideNext:function(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:a,params:r,animating:n}=i;if(!a||i.destroyed)return i;void 0===e&&(e=i.params.speed);let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)})),!0}return r.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const i=this,{params:a,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=i;if(!o||i.destroyed)return i;void 0===e&&(e=i.params.speed);const p=i.virtual&&a.virtual.enabled;if(a.loop){if(d&&!p&&a.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function c(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=c(l?i.translate:-i.translate),m=r.map((e=>c(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&a.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=i.activeIndex-1),"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(f=f-i.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),a.rewind&&i.isBeginning){const a=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(a,e,t,s)}return a.loop&&0===i.activeIndex&&a.cssMode?(requestAnimationFrame((()=>{i.slideTo(f,e,t,s)})),!0):i.slideTo(f,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const a=this;if(a.destroyed)return;void 0===e&&(e=a.params.speed);let r=a.activeIndex;const n=Math.min(a.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/a.params.slidesPerGroup),o=a.rtlTranslate?a.translate:-a.translate;if(o>=a.snapGrid[l]){const e=a.snapGrid[l];o-e>(a.snapGrid[l+1]-e)*i&&(r+=a.params.slidesPerGroup)}else{const e=a.snapGrid[l-1];o-e<=(a.snapGrid[l]-e)*i&&(r-=a.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,a.slidesGrid.length-1),a.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let a,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;a=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+i/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${a}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-i?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${a}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var X={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const a=()=>{f(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):E=r;const S="next"===i||!i,T="prev"===i||!i;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===a?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&x.push(s)})):x.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&x.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||x.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[E],t=o.slidesGrid[E+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(E+Math.ceil(M),0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(a){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(x.length>0&&S)if(void 0===t){const e=o.slidesGrid[E],t=o.slidesGrid[E-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(E-C,0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?x.length/m.grid.rows:x.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=p,o.allowSlideNext=c,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:i,setTranslate:a,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function Y(e,t,s){const i=r(),{params:a}=e,n=a.edgeSwipeDetection,l=a.edgeSwipeThreshold;return!n||!(s<=l||s>=i.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function q(e){const t=this,s=i();let a=e;a.originalEvent&&(a=a.originalEvent);const n=t.touchEventsData;if("pointerdown"===a.type){if(null!==n.pointerId&&n.pointerId!==a.pointerId)return;n.pointerId=a.pointerId}else"touchstart"===a.type&&1===a.targetTouches.length&&(n.touchId=a.targetTouches[0].identifier);if("touchstart"===a.type)return void Y(t,a,a.targetTouches[0].pageX);const{params:l,touches:d,enabled:p}=t;if(!p)return;if(!l.simulateTouch&&"mouse"===a.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let c=a.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...element.assignedElements()].includes(e);return s}(c,t.wrapperEl))return;if("which"in a&&3===a.which)return;if("button"in a&&a.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=a.composedPath?a.composedPath():a.path;u&&a.target&&a.target.shadowRoot&&m&&(c=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!a.target||!a.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const a=s.closest(e);return a||s.getRootNode?a||t(s.getRootNode().host):null}(t)}(h,c):c.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!c.closest(l.swipeHandler))return;d.currentX=a.pageX,d.currentY=a.pageY;const g=d.currentX,v=d.currentY;if(!Y(t,a,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;c.matches(n.focusableElements)&&(w=!1,"SELECT"===c.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==c&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||c.isContentEditable||a.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",a)}function F(e){const t=i(),s=this,a=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let p,c=e;if(c.originalEvent&&(c=c.originalEvent),"pointermove"===c.type){if(null!==a.touchId)return;if(c.pointerId!==a.pointerId)return}if("touchmove"===c.type){if(p=[...c.changedTouches].filter((e=>e.identifier===a.touchId))[0],!p||p.identifier!==a.touchId)return}else p=c;if(!a.isTouched)return void(a.startMoving&&a.isScrolling&&s.emit("touchMoveOpposite",c));const u=p.pageX,m=p.pageY;if(c.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return c.target.matches(a.focusableElements)||(s.allowClick=!1),void(a.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),a.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return a.isTouched=!1,void(a.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&c.target===t.activeElement&&c.target.matches(a.focusableElements))return a.isMoved=!0,void(s.allowClick=!1);a.allowTouchCallbacks&&s.emit("touchMove",c),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,a.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(a.isScrolling&&s.emit("touchMoveOpposite",c),void 0===a.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(a.startMoving=!0)),a.isScrolling||"touchmove"===c.type&&a.preventTouchMoveFromPointerMove)return void(a.isTouched=!1);if(!a.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!a.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),a.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}a.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)}if((new Date).getTime(),a.isMoved&&a.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:a.currentTranslate}),a.loopSwapReset=!0,void(a.startTranslate=a.currentTranslate);s.emit("sliderMove",c),a.isMoved=!0,a.currentTranslate=g+a.startTranslate;let x=!0,E=r.resistanceRatio;if(r.touchReleaseOnEdges&&(E=0),g>0?(b&&y&&a.allowThresholdMove&&a.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),a.currentTranslate>s.minTranslate()&&(x=!1,r.resistance&&(a.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+a.startTranslate+g)**E))):g<0&&(b&&y&&a.allowThresholdMove&&a.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),a.currentTranslatea.startTranslate&&(a.currentTranslate=a.startTranslate),s.allowSlidePrev||s.allowSlideNext||(a.currentTranslate=a.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||a.allowThresholdMove))return void(a.currentTranslate=a.startTranslate);if(!a.allowThresholdMove)return a.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,a.currentTranslate=a.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(a.currentTranslate),s.setTranslate(a.currentTranslate))}function V(e){const t=this,s=t.touchEventsData;let i,a=e;a.originalEvent&&(a=a.originalEvent);if("touchend"===a.type||"touchcancel"===a.type){if(i=[...a.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(a.pointerId!==s.pointerId)return;i=a}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(a.type)){if(!(["pointercancel","contextmenu"].includes(a.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:p,enabled:c}=t;if(!c)return;if(!r.simulateTouch&&"mouse"===a.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",a),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=a.path||a.composedPath&&a.composedPath();t.updateClickedSlide(e&&e[0]||a.target,e),t.emit("tap click",a),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",a)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=p[e]&&h=p[e])&&(g=e,v=p[p.length-1]-p[p.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-p[g])/v,x=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+x):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+x):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(a.target===t.navigation.nextEl||a.target===t.navigation.prevEl)?a.target===t.navigation.nextEl?t.slideTo(g+x):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+x),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function j(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:a,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=a,e.allowSlideNext=i,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function W(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function U(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let a;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();a=0===r?0:(e.translate-e.minTranslate())/r,a!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function K(e){const t=this;D(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function Z(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const Q=(e,t)=>{const s=i(),{params:a,el:r,wrapperEl:n,device:l}=e,o=!!a.nested,d="on"===t?"addEventListener":"removeEventListener",p=t;r&&"string"!=typeof r&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(a.preventClicks||a.preventClicksPropagation)&&r[d]("click",e.onClick,!0),a.cssMode&&n[d]("scroll",e.onScroll),a.updateOnWindowResize?e[p](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",j,!0):e[p]("observerUpdate",j,!0),r[d]("load",e.onLoad,{capture:!0}))};const J=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var ee={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function te(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],a=s[i];"object"==typeof a&&null!==a?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in a?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const se={eventsEmitter:$,update:N,translate:B,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),H({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),H({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:R,loop:X,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=q.bind(e),e.onTouchMove=F.bind(e),e.onTouchEnd=V.bind(e),e.onDocumentTouchStart=Z.bind(e),t.cssMode&&(e.onScroll=U.bind(e)),e.onClick=W.bind(e),e.onLoad=K.bind(e),Q(e,"on")},detachEvents:function(){Q(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:a}=e,r=i.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=J(e,i),d=J(e,l),p=e.params.grabCursor,u=l.grabCursor,m=i.enabled;o&&!d?(a.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(a.classList.add(`${i.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===i.grid.fill)&&a.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),p&&!u?e.unsetGrabCursor():!p&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=i[t]&&i[t].enabled,a=l[t]&&l[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const h=l.direction&&l.direction!==i.direction,f=i.loop&&(l.slidesPerView!==i.slidesPerView||h),g=i.loop;h&&s&&e.changeDirection(),c(e.params,l);const v=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),m&&!v?e.disable():!m&&v&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(f?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!g&&w?(e.loopCreate(t),e.updateSlides()):g&&!w&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const a=r(),n="window"===t?a.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:a,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),a.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},ie={};class ae{constructor(){let e,t;for(var s=arguments.length,a=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new ae(i))})),e}const l=this;l.__swiper__=!0,l.support=z(),l.device=k({userAgent:t.userAgent}),l.browser=A(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:te(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=c({},ee,o);return l.params=c({},d,ie,t),l.originalParams=c({},l.params),l.passedParams=c({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),a=(s.maxTranslate()-i)*e+i;s.translateTo(a,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:a,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?Math.ceil(i[l].swiperSlideSize):0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){a[l]-a[e]{t.complete&&D(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;a=e.slideTo(t.length-1,0,!1,!0)}else a=e.slideTo(e.activeIndex,0,!1,!0);a||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let a=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return f(s,i())[0]})();return!a&&t.params.createElements&&(a=v("div",t.params.wrapperClass),s.append(a),f(s,`.${t.params.slideClass}`).forEach((e=>{a.append(e)}))),Object.assign(t,{el:s,wrapperEl:a,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:a,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(a,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?D(t,e):e.addEventListener("load",(e=>{D(t,e.target)}))})),G(t),t.initialized=!0,G(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:a,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),a&&"string"!=typeof a&&a.removeAttribute("style"),r&&r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(ie,e)}static get extendedDefaults(){return ie}static get defaults(){return ee}static installModule(e){ae.prototype.__modules__||(ae.prototype.__modules__=[]);const t=ae.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>ae.installModule(e))),ae):(ae.installModule(e),ae)}}function re(e,t,s,i){return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let r=f(e.el,`.${i[a]}`)[0];r||(r=v("div",i[a]),r.className=i[a],e.el.append(r)),s[a]=r,t[a]=r}})),s}function ne(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function le(e){const t=this,{params:s,slidesEl:i}=t;s.loop&&t.loopDestroy();const a=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.append(t.children[0]),t.innerHTML=""}else i.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.prepend(t.children[0]),t.innerHTML=""}else a.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),i("setTranslate",(()=>{s.params.effect===t&&a()})),i("setTransition",((e,i)=>{s.params.effect===t&&r(i)})),i("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),i("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(p=!0),requestAnimationFrame((()=>{p&&s.slides&&s.slides.length&&(a(),p=!1)})))}))}function me(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function he(e){let{swiper:t,duration:s,transformElements:i,allSlides:a}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=a?i:i.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{E(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function fe(e,t,s){const i=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=h(t);let r=a.querySelector(`.${i.split(" ").join(".")}`);return r||(r=v("div",i.split(" ")),a.append(r)),r}Object.keys(se).forEach((e=>{Object.keys(se[e]).forEach((t=>{ae.prototype[t]=se[e][t]}))})),ae.use([function(e){let{swiper:t,on:s,emit:i}=e;const a=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==a.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=a.requestAnimationFrame((()=>{const{width:s,height:i}=t;let a=s,r=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:n}=e;n&&n!==t.el||(a=i?i.width:(s[0]||s).inlineSize,r=i?i.height:(s[0]||s).blockSize)})),a===s&&r===i||o()}))})),n.observe(t.el)):(a.addEventListener("resize",o),a.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&a.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),a.removeEventListener("resize",o),a.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const i=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void a("observerUpdate",e[0]);const s=function(){a("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=x(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ge=[function(e){let t,{swiper:s,extendParams:a,on:r,emit:n}=e;a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=i();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const i=s.params.virtual;if(i.cache&&s.virtual.cache[t])return s.virtual.cache[t];let a;return i.renderSlide?(a=i.renderSlide.call(s,e,t),"string"==typeof a&&(o.innerHTML=a,a=o.children[0])):a=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),a.setAttribute("data-swiper-slide-index",t),i.renderSlide||(a.innerHTML=e),i.cache&&(s.virtual.cache[t]=a),a}function p(e,t){const{slidesPerView:i,slidesPerGroup:a,centeredSlides:r,loop:l,initialSlide:o}=s.params;if(t&&!l&&o>0)return;const{addSlidesBefore:p,addSlidesAfter:c}=s.params.virtual,{from:u,to:m,slides:h,slidesGrid:g,offset:v}=s.virtual;s.params.cssMode||s.updateActiveIndex();const w=s.activeIndex||0;let b,y,x;b=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",r?(y=Math.floor(i/2)+a+c,x=Math.floor(i/2)+a+p):(y=i+(a-1)+c,x=(l?i:a)+p);let E=w-x,S=w+y;l||(E=Math.max(E,0),S=Math.min(S,h.length-1));let T=(s.slidesGrid[E]||0)-(s.slidesGrid[0]||0);function M(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(l&&w>=x?(E-=x,r||(T+=s.slidesGrid[0])):l&&w{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:T,from:E,to:S,slides:function(){const e=[];for(let t=E;t<=S;t+=1)e.push(h[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?M():n("virtualUpdate"));const C=[],P=[],L=e=>{let t=e;return e<0?t=h.length+e:t>=h.length&&(t-=h.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=u;e<=m;e+=1)if(eS){const t=L(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const z=l?-h.length:0,k=l?2*h.length:h.length;for(let t=z;t=E&&t<=S){const s=L(t);void 0===m||e?P.push(s):(t>m&&P.push(s),t{s.slidesEl.append(d(h[e],e))})),l)for(let e=C.length-1;e>=0;e-=1){const t=C[e];s.slidesEl.prepend(d(h[t],t))}else C.sort(((e,t)=>t-e)),C.forEach((e=>{s.slidesEl.prepend(d(h[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),M()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,p(!1,!0)})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{p()}),100)):p())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const i=e[s],r=i.getAttribute("data-swiper-slide-index");r&&i.setAttribute("data-swiper-slide-index",parseInt(r,10)+a),t[parseInt(s,10)+a]=i})),s.virtual.cache=t}p(!0),s.slideTo(i,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let i=e.length-1;i>=0;i-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[i]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[i],1),e[i]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===x(t.el,`.${t.params.slideActiveClass}`).length)return;const i=t.el,a=i.clientWidth,r=i.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(i);s&&(d.left-=i.scrollLeft);const p=[[d.left,d.top],[d.left+a,d.top],[d.left,d.top+r],[d.left+a,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||p||c||u)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),((p||u)&&!s||(d||c)&&s)&&t.slideNext(),((d||c)&&!s||(p||u)&&s)&&t.slidePrev()):((d||p||m||h)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),(p||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",a)}}function p(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function c(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&p()})),a("destroy",(()=>{t.keyboard.enabled&&c()})),Object.assign(t.keyboard,{enable:p,disable:c})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let p,c=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-c<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),a("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),a("scroll",e.raw)),c=(new n.Date).getTime(),!1)))}function g(e){let s=e,i=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const c=n&&n.contains(s.target);if(!t.mouseEntered&&!c&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,i=0,a=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),i=10*t,a=10*s,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(i=e.deltaX),e.shiftKey&&!i&&(i=a,a=0),(i||a)&&e.deltaMode&&(1===e.deltaMode?(i*=40,a*=40):(i*=800,a*=800)),i&&!t&&(t=i<1?-1:1),a&&!s&&(s=a<1?-1:1),{spinX:t,spinY:s,pixelX:i,pixelY:a}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),i=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),i&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},i=p&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!c&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,i=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-i.time<500&&i.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;p=e,u.splice(0),d=l((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{p=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(i||a("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const i=u.length?u[u.length-1]:void 0;if(u.push(s),i?(s.direction!==i.direction||s.delta>i.delta||s.time>i.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}i("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),i("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;function r(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s&&s.length>1&&1===t.el.querySelectorAll(e).length?s=t.el.querySelector(e):s&&1===s.length&&(s=s[0])),e&&!s?e:s)}function n(e,s){const i=t.params.navigation;(e=T(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](i.lockClass))}))}function l(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return n(s,!1),void n(e,!1);n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),a("navigationPrev"))}function d(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),a("navigationNext"))}function p(){const e=t.params.navigation;if(t.params.navigation=re(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=r(e.nextEl),i=r(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:i}),s=T(s),i=T(i);const a=(s,i)=>{s&&s.addEventListener("click","next"===i?d:o),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>a(e,"next"))),i.forEach((e=>a(e,"prev")))}function c(){let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s);const i=(e,s)=>{e.removeEventListener("click","next"===s?d:o),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>i(e,"next"))),s.forEach((e=>i(e,"prev")))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null},i("init",(()=>{!1===t.params.navigation.enabled?u():(p(),l())})),i("toEdge fromEdge lock unlock",(()=>{l()})),i("destroy",(()=>{c()})),i("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s),t.enabled?l():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),i("click",((e,s)=>{let{nextEl:i,prevEl:r}=t.navigation;i=T(i),r=T(r);const n=s.target;let l=r.includes(n)||i.includes(n);if(t.isElement&&!l){const e=s.path||s.composedPath&&s.composedPath();e&&(l=e.find((e=>i.includes(e)||r.includes(e))))}if(t.params.navigation.hideOnClick&&!l){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;i.length?e=i[0].classList.contains(t.params.navigation.hiddenClass):r.length&&(e=r[0].classList.contains(t.params.navigation.hiddenClass)),a(!0===e?"navigationShow":"navigationHide"),[...i,...r].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const u=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),c()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),p(),l()},disable:u,update:l,init:p,destroy:c})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function d(e,s){const{bulletActiveClass:i}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${i}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${i}-${s}-${s}`))}function p(e){const s=e.target.closest(ne(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const i=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===i)return;t.slideToLoop(i)}else t.slideTo(i)}function c(){const e=t.rtl,s=t.params.pagination;if(o())return;let i,r,p=t.pagination.el;p=T(p);const c=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,u=t.params.loop?Math.ceil(c/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,i=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(i=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,i=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let o,c,u;if(s.dynamicBullets&&(n=S(a[0],t.isHorizontal()?"width":"height",!0),p.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=i-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(i-l,0),c=o+(Math.min(a.length,s.dynamicMainBullets)-1),u=(c+o)/2),a.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),p.length>1)a.forEach((e=>{const a=y(e);a===i?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(a>=o&&a<=c&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),a===o&&d(e,"prev"),a===c&&d(e,"next"))}));else{const e=a[i];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&a.forEach(((e,t)=>{e.setAttribute("part",t===i?"bullet-active":"bullet")})),s.dynamicBullets){const e=a[o],t=a[c];for(let e=o;e<=c;e+=1)a[e]&&a[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));d(e,"prev"),d(t,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}p.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(ne(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(i+1)})),e.querySelectorAll(ne(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(u)}))),"progressbar"===s.type){let a;a=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(i+1)/u;let n=1,l=1;"horizontal"===a?n=r:l=r,e.querySelectorAll(ne(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,i+1,u),0===r&&a("paginationRender",e)):(0===r&&a("paginationRender",e),a("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let i=t.pagination.el;i=T(i);let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&i>s&&(i=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],i.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(ne(e.bulletClass)))})),"custom"!==e.type&&a("paginationRender",i[0])}function m(){t.params.pagination=re(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>x(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=T(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",p),t.enabled||s.classList.add(e.lockClass)})))}function h(){const e=t.params.pagination;if(o())return;let s=t.pagination.el;s&&(s=T(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",p))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}i("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),i("init",(()=>{!1===t.params.pagination.enabled?f():(m(),u(),c())})),i("activeIndexChange",(()=>{void 0===t.snapIndex&&c()})),i("snapIndexChange",(()=>{c()})),i("snapGridLengthChange",(()=>{u(),c()})),i("destroy",(()=>{h()})),i("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),i("lock unlock",(()=>{c()})),i("click",((e,s)=>{const i=s.target,r=T(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!i.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&i===t.navigation.nextEl||t.navigation.prevEl&&i===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);a(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const f=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),h()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),m(),u(),c()},disable:f,render:u,update:c,init:m,destroy:h})},function(e){let{swiper:t,extendParams:s,on:a,emit:r}=e;const o=i();let d,p,c,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:i,el:a}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=p,o=(c-p)*n;s?(o=-o,o>0?(l=p-o,o=0):-o+p>c&&(l=c+o)):o<0?(l=p+o,o=0):o+p>c&&(l=c-o),t.isHorizontal()?(i.style.transform=`translate3d(${o}px, 0, 0)`,i.style.width=`${l}px`):(i.style.transform=`translate3d(0px, ${o}px, 0)`,i.style.height=`${l}px`),r.hide&&(clearTimeout(h),a.style.opacity=1,h=setTimeout((()=>{a.style.opacity=0,a.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:i}=e;s.style.width="",s.style.height="",c=t.isHorizontal()?i.offsetWidth:i.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),p="auto"===t.params.scrollbar.dragSize?c*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${p}px`:s.style.height=`${p}px`,i.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(i.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function x(e){const{scrollbar:s,rtlTranslate:i}=t,{el:a}=s;let r;r=(y(e)-w(a)[t.isHorizontal()?"left":"top"]-(null!==d?d:p/2))/(c-p),r=Math.max(Math.min(r,1),0),i&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function E(e){const s=t.params.scrollbar,{scrollbar:i,wrapperEl:a}=t,{el:n,dragEl:l}=i;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),a.style.transitionDuration="100ms",l.style.transitionDuration="100ms",x(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:i}=t,{el:a,dragEl:n}=s;m&&(e.preventDefault&&e.cancelable?e.preventDefault():e.returnValue=!1,x(e),i.style.transitionDuration="0ms",a.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function M(e){const s=t.params.scrollbar,{scrollbar:i,wrapperEl:a}=t,{el:n}=i;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",a.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,params:i}=t,a=s.el;if(!a)return;const r=a,n=!!i.passiveListeners&&{passive:!1,capture:!1},l=!!i.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",E,n),o[d]("pointermove",S,n),o[d]("pointerup",M,l)}function P(){const{scrollbar:e,el:s}=t;t.params.scrollbar=re(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const i=t.params.scrollbar;if(!i.el)return;let a,r;if("string"==typeof i.el&&t.isElement&&(a=t.el.querySelector(i.el)),a||"string"!=typeof i.el)a||(a=i.el);else if(a=o.querySelectorAll(i.el),!a.length)return;t.params.uniqueNavElements&&"string"==typeof i.el&&a.length>1&&1===s.querySelectorAll(i.el).length&&(a=s.querySelector(i.el)),a.length>0&&(a=a[0]),a.classList.add(t.isHorizontal()?i.horizontalClass:i.verticalClass),a&&(r=a.querySelector(ne(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),a.append(r))),Object.assign(e,{el:a,dragEl:r}),i.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),a&&a.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function L(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},a("changeDirection",(()=>{if(!t.scrollbar||!t.scrollbar.el)return;const e=t.params.scrollbar;let{el:s}=t.scrollbar;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.scrollbar.enabled?z():(P(),b(),g())})),a("update resize observerUpdate lock unlock changeDirection",(()=>{b()})),a("setTranslate",(()=>{g()})),a("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),a("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),a("destroy",(()=>{L()}));const z=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),L()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),P(),b(),g()},disable:z,updateSize:b,setTranslate:g,init:P,destroy:L})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({parallax:{enabled:!1}});const a="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:i}=t,a=i?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),p=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*a+"%":n*s*a+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let c=`translate3d(${n}, ${l}, 0px)`;if(null!=o){c+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(p&&null!=p){c+=` rotate(${p*s*-1}deg)`}e.style.transform=c},n=()=>{const{el:e,slides:s,progress:i,snapGrid:n,isElement:l}=t,o=f(e,a);t.isElement&&o.push(...f(t.hostEl,a)),o.forEach((e=>{r(e,i)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-i*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${a}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};i("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),i("init",(()=>{t.params.parallax.enabled&&n()})),i("setTranslate",(()=>{t.params.parallax.enabled&&n()})),i("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:i}=t,r=[...s.querySelectorAll(a)];t.isElement&&r.push(...i.querySelectorAll(a)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=r();s({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,p=1,c=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v,b=1;function y(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,i=u[1].pageY;return Math.sqrt((s-e)**2+(i-t)**2)}function E(){const e=t.params.zoom,s=m.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&m.imageEl&&m.imageEl.naturalWidth){const e=m.imageEl.naturalWidth/m.imageEl.offsetWidth;return Math.min(e,s)}return s}function S(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function T(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!S(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=y(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let i=m.slideEl.querySelector(`.${s.containerClass}`);if(i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=i,m.imageWrapEl=i?x(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=E()}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/p,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/p]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}c=!0}}function M(e){if(!S(e))return;const s=t.params.zoom,i=t.zoom,a=u.findIndex((t=>t.pointerId===e.pointerId));a>=0&&(u[a]=e),u.length<2||(o=!0,m.scaleMove=y(),m.imageEl&&(i.scale=m.scaleMove/m.scaleStart*p,i.scale>m.maxRatio&&(i.scale=m.maxRatio-1+(i.scale-m.maxRatio+1)**.5),i.scalet.pointerId===e.pointerId));a>=0&&u.splice(a,1),l&&o&&(l=!1,o=!1,m.imageEl&&(i.scale=Math.max(Math.min(i.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`,p=i.scale,c=!1,i.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):i.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===i.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function P(){t.touchEventsData.preventTouchMoveFromPointerMove=!1}function L(e){if(!S(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth||m.imageEl.clientWidth,h.height=m.imageEl.offsetHeight||m.imageEl.clientHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const i=h.width*s.scale,a=h.height*s.scale;h.minX=Math.min(m.slideWidth/2-i/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-a/2,0),h.maxY=-h.minY,h.touchesCurrent.x=u.length>0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!c){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return h.isTouched=!1,void P();if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return h.isTouched=!1,void P()}e.cancelable&&e.preventDefault(),e.stopPropagation(),clearTimeout(v),t.touchEventsData.preventTouchMoveFromPointerMove=!0,v=setTimeout((()=>{P()})),h.isMoved=!0;const r=(s.scale-p)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function z(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,p=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function k(e){const s=t.zoom,i=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${i.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?x(m.imageEl,`.${i.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let a,r,l,o,d,c,u,g,v,b,y,S,T,M,C,P,L,z;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${i.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(a=e.pageX,r=e.pageY):(a=h.touchesStart.x,r=h.touchesStart.y);const k="number"==typeof e?e:null;1===p&&k&&(a=void 0,r=void 0);const A=E();s.scale=k||A,p=k||A,!e||1===p&&k?(u=0,g=0):(L=m.slideEl.offsetWidth,z=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+L/2-a,c=o+z/2-r,v=m.imageEl.offsetWidth||m.imageEl.clientWidth,b=m.imageEl.offsetHeight||m.imageEl.clientHeight,y=v*s.scale,S=b*s.scale,T=Math.min(L/2-y/2,0),M=Math.min(z/2-S/2,0),C=-T,P=-M,u=d*s.scale,g=c*s.scale,uC&&(u=C),gP&&(g=P)),k&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function A(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?x(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,p=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function $(e){const s=t.zoom;s.scale&&1!==s.scale?A():k(e)}function I(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:i}=I();t.wrapperEl.addEventListener("pointerdown",T,s),t.wrapperEl.addEventListener("pointermove",M,i),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,C,s)})),t.wrapperEl.addEventListener("pointermove",L,i)}function D(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:i}=I();t.wrapperEl.removeEventListener("pointerdown",T,s),t.wrapperEl.removeEventListener("pointermove",M,i),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,C,s)})),t.wrapperEl.removeEventListener("pointermove",L,i)}Object.defineProperty(t.zoom,"scale",{get:()=>b,set(e){if(b!==e){const t=m.imageEl,s=m.slideEl;a("zoomChange",e,t,s)}b=e}}),i("init",(()=>{t.params.zoom.enabled&&O()})),i("destroy",(()=>{D()})),i("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const i=u.length>0?u[0]:e;h.touchesStart.x=i.pageX,h.touchesStart.y=i.pageY}(s)})),i("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,i=300;const a=g.x*s,r=h.currentX+a,n=g.y*i,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(i=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,i);h.currentX=r,h.currentY=l;const d=h.width*e.scale,p=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-p/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),i("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&$(s)})),i("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&z()})),i("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&z()})),Object.assign(t.zoom,{enable:O,disable:D,in:k,out:A,toggle:$})},function(e){let{swiper:t,extendParams:s,on:i}=e;function a(e,t){const s=function(){let e,t,s;return(i,a)=>{for(t=-1,e=i.length;e-t>1;)s=e+t>>1,i[s]<=a?t=s:e=s;return e}}();let i,a;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(a=s(this.x,e),i=a-1,(e-this.x[i])*(this.y[a]-this.y[i])/(this.x[a]-this.x[i])+this.y[i]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},i("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){("string"==typeof t.params.controller.control?[...document.querySelectorAll(t.params.controller.control)]:[t.params.controller.control]).forEach((e=>{if(t.controller.control||(t.controller.control=[]),e&&e.swiper)t.controller.control.push(e.swiper);else if(e){const s=`${t.params.eventsPrefix}init`,i=a=>{t.controller.control.push(a.detail[0]),t.update(),e.removeEventListener(s,i)};e.addEventListener(s,i)}}))}else t.controller.control=t.params.controller.control})),i("update",(()=>{r()})),i("resize",(()=>{r()})),i("observerUpdate",(()=>{r()})),i("setTranslate",((e,s,i)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,i)})),i("setTransition",((e,s,i)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,i)})),Object.assign(t.controller,{setTranslate:function(e,s){const i=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new a(t.slidesGrid,e.slidesGrid):new a(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(i))for(let e=0;e{s.updateAutoHeight()})),E(s.wrapperEl,(()=>{a&&s.transitionEnd()}))))}if(Array.isArray(a))for(r=0;r{e.setAttribute("tabIndex","0")}))}function c(e){(e=T(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function u(e,t){(e=T(e)).forEach((e=>{e.setAttribute("role",t)}))}function m(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function h(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function f(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function g(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function w(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,i=e.target;if(!t.pagination||!t.pagination.el||i!==t.pagination.el&&!t.pagination.el.contains(e.target)||e.target.matches(ne(t.params.pagination.bulletClass))){if(t.navigation&&t.navigation.prevEl&&t.navigation.nextEl){const e=T(t.navigation.prevEl);T(t.navigation.nextEl).includes(i)&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?d(s.lastSlideMessage):d(s.nextSlideMessage)),e.includes(i)&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?d(s.firstSlideMessage):d(s.prevSlideMessage))}t.pagination&&i.matches(ne(t.params.pagination.bulletClass))&&i.click()}}function b(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function x(){return b()&&t.params.pagination.clickable}const E=(e,t,s)=>{p(e),"BUTTON"!==e.tagName&&(u(e,"button"),e.addEventListener("keydown",w)),h(e,s),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},S=e=>{n&&n!==e.target&&!n.contains(e.target)&&(r=!0),t.a11y.clicked=!0},M=()=>{r=!1,requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},C=e=>{o=(new Date).getTime()},P=e=>{if(t.a11y.clicked||!t.params.a11y.scrollOnFocus)return;if((new Date).getTime()-o<100)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;n=s;const i=t.slides.indexOf(s)===t.activeIndex,a=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);i||a||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,requestAnimationFrame((()=>{r||(t.params.loop?t.slideToLoop(parseInt(s.getAttribute("data-swiper-slide-index")),0):t.slideTo(t.slides.indexOf(s),0),r=!1)})))},L=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&m(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&u(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((i,a)=>{const r=t.params.loop?parseInt(i.getAttribute("data-swiper-slide-index"),10):a;h(i,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},z=()=>{const e=t.params.a11y;t.el.append(l);const s=t.el;e.containerRoleDescriptionMessage&&m(s,e.containerRoleDescriptionMessage),e.containerMessage&&h(s,e.containerMessage);const a=t.wrapperEl,r=e.id||a.getAttribute("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,T(a).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(a,o),L();let{nextEl:p,prevEl:c}=t.navigation?t.navigation:{};if(p=T(p),c=T(c),p&&p.forEach((t=>E(t,r,e.nextSlideMessage))),c&&c.forEach((t=>E(t,r,e.prevSlideMessage))),x()){T(t.pagination.el).forEach((e=>{e.addEventListener("keydown",w)}))}i().addEventListener("visibilitychange",C),t.el.addEventListener("focus",P,!0),t.el.addEventListener("focus",P,!0),t.el.addEventListener("pointerdown",S,!0),t.el.addEventListener("pointerup",M,!0)};a("beforeInit",(()=>{l=v("span",t.params.a11y.notificationClass),l.setAttribute("aria-live","assertive"),l.setAttribute("aria-atomic","true")})),a("afterInit",(()=>{t.params.a11y.enabled&&z()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&L()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(f(s),c(s)):(g(s),p(s))),e&&(t.isEnd?(f(e),c(e)):(g(e),p(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;b()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(p(s),t.params.pagination.renderBullet||(u(s,"button"),h(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(ne(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){l&&l.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=T(e),s=T(s),e&&e.forEach((e=>e.removeEventListener("keydown",w))),s&&s.forEach((e=>e.removeEventListener("keydown",w))),x()&&T(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",w)}));i().removeEventListener("visibilitychange",C),t.el&&"string"!=typeof t.el&&(t.el.removeEventListener("focus",P,!0),t.el.removeEventListener("pointerdown",S,!0),t.el.removeEventListener("pointerup",M,!0))}()}))},function(e){let{swiper:t,extendParams:s,on:i}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let a=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const i=s.pathname.slice(1).split("/").filter((e=>""!==e)),a=i.length;return{key:i[a-2],value:i[a-1]}},d=(e,s)=>{const i=r();if(!a||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):i.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${s}"]`):t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const p=i.history.state;p&&p.value===d||(t.params.history.replaceState?i.history.replaceState({value:d},null,d):i.history.pushState({value:d},null,d))},p=(e,s,i)=>{if(s)for(let a=0,r=t.slides.length;a{n=o(t.params.url),p(t.params.speed,n.value,!1)};i("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);a=!0,n=o(t.params.url),n.key||n.value?(p(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",c)):t.params.history.replaceState||e.addEventListener("popstate",c)}})()})),i("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",c)})()})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{a&&d(t.params.history.key,t.activeIndex)})),i("slideChange",(()=>{a&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:a,on:n}=e,l=!1;const o=i(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const p=()=>{a("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},c=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),a("hashSet")):(o.location.hash=s||"",a("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,i=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(i||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",p)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",p)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&c()})),n("slideChange",(()=>{l&&t.params.cssMode&&c()}))},function(e){let t,s,{swiper:a,extendParams:r,on:n,emit:l,params:o}=e;a.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,p,c,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){a&&!a.destroyed&&a.wrapperEl&&e.target===a.wrapperEl&&(a.wrapperEl.removeEventListener("transitionend",y),g||e.detail&&e.detail.bySwiperTouchMove||C())}const x=()=>{if(a.destroyed||!a.autoplay.running)return;a.autoplay.paused?p=!0:p&&(w=d,p=!1);const e=a.autoplay.paused?d:b+w-(new Date).getTime();a.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{x()}))},E=e=>{if(a.destroyed||!a.autoplay.running)return;cancelAnimationFrame(s),x();let i=void 0===e?a.params.autoplay.delay:e;v=a.params.autoplay.delay,w=a.params.autoplay.delay;const r=(()=>{let e;if(e=a.virtual&&a.params.virtual.enabled?a.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:a.slides[a.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(i=r,v=r,w=r),d=i;const n=a.params.speed,o=()=>{a&&!a.destroyed&&(a.params.autoplay.reverseDirection?!a.isBeginning||a.params.loop||a.params.rewind?(a.slidePrev(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(a.slides.length-1,n,!0,!0),l("autoplay")):!a.isEnd||a.params.loop||a.params.rewind?(a.slideNext(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(0,n,!0,!0),l("autoplay")),a.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{E()}))))};return i>0?(clearTimeout(t),t=setTimeout((()=>{o()}),i)):requestAnimationFrame((()=>{o()})),i},S=()=>{b=(new Date).getTime(),a.autoplay.running=!0,E(),l("autoplayStart")},T=()=>{a.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(a.destroyed||!a.autoplay.running)return;clearTimeout(t),e||(f=!0);const i=()=>{l("autoplayPause"),a.params.autoplay.waitForTransition?a.wrapperEl.addEventListener("transitionend",y):C()};if(a.autoplay.paused=!0,s)return h&&(d=a.params.autoplay.delay),h=!1,void i();const r=d||a.params.autoplay.delay;d=r-((new Date).getTime()-b),a.isEnd&&d<0&&!a.params.loop||(d<0&&(d=0),i())},C=()=>{a.isEnd&&d<0&&!a.params.loop||a.destroyed||!a.autoplay.running||(b=(new Date).getTime(),f?(f=!1,E(d)):E(),a.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(a.destroyed||!a.autoplay.running)return;const e=i();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,a.animating||a.autoplay.paused||M(!0))},z=e=>{"mouse"===e.pointerType&&(g=!1,a.autoplay.paused&&C())};n("init",(()=>{a.params.autoplay.enabled&&(a.params.autoplay.pauseOnMouseEnter&&(a.el.addEventListener("pointerenter",L),a.el.addEventListener("pointerleave",z)),i().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{a.el&&"string"!=typeof a.el&&(a.el.removeEventListener("pointerenter",L),a.el.removeEventListener("pointerleave",z)),i().removeEventListener("visibilitychange",P),a.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{a.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!a.destroyed&&a.autoplay.running&&(s||!a.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!a.destroyed&&a.autoplay.running&&(a.params.autoplay.disableOnInteraction?T():(c=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!a.destroyed&&a.autoplay.running&&c){if(clearTimeout(m),clearTimeout(t),a.params.autoplay.disableOnInteraction)return u=!1,void(c=!1);u&&a.params.cssMode&&C(),u=!1,c=!1}})),n("slideChange",(()=>{!a.destroyed&&a.autoplay.running&&(h=!0)})),Object.assign(a.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,i=e.clickedSlide;if(i&&i.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let a;a=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(a):t.slideTo(a)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(p(e.swiper)){const i=Object.assign({},e.swiper);Object.assign(i,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(i),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const i="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let a=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(a=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(a=1),a=Math.floor(a),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>a?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>a&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=i(),a=()=>{const i="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(i&&i.swiper)e.swiper=i.swiper,o(),d(!0);else if(i){const s=`${t.params.eventsPrefix}init`,a=r=>{e.swiper=r.detail[0],i.removeEventListener(s,a),o(),d(!0),e.swiper.update(),t.update()};i.addEventListener(s,a)}return i},r=()=>{if(t.destroyed)return;a()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),a("slideChange update resize observerUpdate",(()=>{d()})),a("setTransition",((e,s)=>{const i=t.thumbs.swiper;i&&!i.destroyed&&i.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:i,once:a}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:p}=t,c=o()-p.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=p.velocities.pop(),s=p.velocities.pop(),i=e.position-s.position,a=e.time-s.time;t.velocity=i/a,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,p.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(ct.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>h&&(c=t.minTranslate()+h),u=t.minTranslate(),m=!0,p.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(d[e]-c){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),i=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&p.allowMomentumBounce&&(i("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(i("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&i("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(i("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,i,a,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{a=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;a&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),i=1,r.emitContainerClasses()):!a&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),a=s})),r.grid={initSlides:e=>{const{slidesPerView:a}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;i=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==a&&"row"===l&&(t=Math.max(t,a*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,a,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:p,fill:c}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===c&&l>1){const s=Math.floor(e/(l*p)),i=e-p*l*s,r=0===s?l:Math.min(Math.ceil((u-s*p*l)/p),l);f=Math.floor(i/r),h=i-f*r+s*l,m=h+f*t/p,a.style.order=m}else"column"===c?(h=Math.floor(e/p),f=e-h*p,(h>i||h===i&&f===p-1)&&(f+=1,f>=p&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);a.row=f,a.column=h,a.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,a.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",a.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:i,roundLengths:a}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),i){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const a=(e,t,s)=>{let i=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(i)),a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(a)),i&&(i.style.opacity=Math.max(-t,0)),a&&(a.style.opacity=Math.max(t,0))};ue({effect:"cube",swiper:t,on:i,setTranslate:()=>{const{el:e,wrapperEl:s,slides:i,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,p=M(t),c=t.params.cubeEffect,u=t.isHorizontal(),m=t.virtual&&t.params.virtual.enabled;let h,f=0;c.shadow&&(u?(h=t.wrapperEl.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),t.wrapperEl.append(h)),h.style.height=`${r}px`):(h=e.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),e.append(h))));for(let e=0;e-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.style.transform=w,c.slideShadows&&a(t,d,u)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,c.shadow)if(u)h.style.transform=`translate3d(0px, ${r/2+c.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,i=c.shadowScale/t,a=c.shadowOffset;h.style.transform=`scale3d(${s}, 1, ${i}) translate3d(0px, ${n/2+a}px, ${-n/2/i}px) rotateX(-89.99deg)`}const g=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${g}px) rotateX(${p(t.isHorizontal()?0:f)}deg) rotateY(${p(t.isHorizontal()?-f:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{el:s,slides:i}=t;if(i.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);a(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const a=(e,s)=>{let i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=fe("flip",e,t.isHorizontal()?"left":"top")),a||(a=fe("flip",e,t.isHorizontal()?"right":"bottom")),i&&(i.style.opacity=Math.max(-s,0)),a&&(a.style.opacity=Math.max(s,0))};ue({effect:"flip",swiper:t,on:i,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,i=t.params.flipEffect,r=M(t);for(let n=0;n{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),a(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),ue({effect:"coverflow",swiper:t,on:i,setTranslate:()=>{const{width:e,height:s,slides:i,slidesSizesGrid:a}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,p=r.depth,c=M(t);for(let e=0,t=i.length;e0?u:0),s&&(s.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;ue({effect:"creative",swiper:t,on:i,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:i}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides,o=M(t);if(l){const e=i[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(g=r.prev,f=!0),m.forEach(((e,t)=>{m[t]=`calc(${e}px + (${a(g.translate[t])} * ${Math.abs(p*n)}))`})),h.forEach(((e,t)=>{let s=g.rotate[t]*Math.abs(p*n);h[t]=s})),i.style.zIndex=-Math.abs(Math.round(d))+e.length;const v=m.join(", "),w=`rotateX(${o(h[0])}deg) rotateY(${o(h[1])}deg) rotateZ(${o(h[2])}deg)`,b=c<0?`scale(${1+(1-g.scale)*c*n})`:`scale(${1-(1-g.scale)*c*n})`,y=c<0?1+(1-g.opacity)*c*n:1-(1-g.opacity)*c*n,x=`translate3d(${v}) ${w} ${b}`;if(f&&g.shadow||!f){let e=i.querySelector(".swiper-slide-shadow");if(!e&&g.shadow&&(e=fe("creative",i)),e){const t=r.shadowPerProgress?p*(1/r.limitProgress):p;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=me(0,i);E.style.transform=x,E.style.opacity=y,g.origin&&(E.style.transformOrigin=g.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),ue({effect:"cards",swiper:t,on:i,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:i}=t,a=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=i?-t.translate:t.translate;for(let o=0;o0&&c<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;v+=-28*c*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(c)+"%"}if(m=c<0?`calc(${m}px ${i?"-":"+"} (${w*Math.abs(c)}%))`:c>0?`calc(${m}px ${i?"-":"+"} (-${w*Math.abs(c)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const E=c<0?""+(1+(1-g)*c):""+(1-(1-g)*c),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${a.rotate?i?-v:v:0}deg)\n scale(${E})\n `;if(a.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=fe("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(p))+e.length;me(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];ae.use(ge);const ve=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function we(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function be(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>s.indexOf(e)<0)).forEach((s=>{void 0===e[s]?e[s]=t[s]:we(t[s])&&we(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:be(e[s],t[s]):e[s]=t[s]}))}function ye(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}const xe=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},Ee=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function Se(e,t,s){const i={},a={};be(i,ee);const r=[...ve,"on"],n=r.map((e=>e.replace(/_/,"")));r.forEach((t=>{t=t.replace("_",""),void 0!==e[t]&&(a[t]=e[t])}));const l=[...e.attributes];return"string"==typeof t&&void 0!==s&&l.push({name:t,value:we(s)?{...s}:s}),l.forEach((e=>{const t=Ee.filter((t=>0===e.name.indexOf(`${t}-`)))[0];if(t){const s=ye(t),i=ye(e.name.split(`${t}-`)[1]);void 0===a[s]&&(a[s]={}),!0===a[s]&&(a[s]={enabled:!0}),a[s][i]=xe(e.value)}else{const t=ye(e.name);if(!n.includes(t))return;const s=xe(e.value);a[t]&&Ee.includes(e.name)&&!we(s)?(a[t].constructor!==Object&&(a[t]={}),a[t].enabled=!!s):a[t]=s}})),be(i,a),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:a}}const Te=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}";const Me="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,Ce='\n ',Pe=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class Le extends Me{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return Ce}static get prevButtonSvg(){return Ce.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[Te,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&Pe(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)}));const t=document.createElement("div");var s;t.classList.add("swiper"),t.part="container",t.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,t)=>`\n \n \n \n `)).join("")}\n
\n \n ${s=this.passedParams,void 0===s&&(s={}),s.navigation&&void 0===s.navigation.nextEl&&void 0===s.navigation.prevEl?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${function(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
\n ':""}\n ${function(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:t,passedParams:s}=Se(this);this.swiperParams=t,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new ae(this.shadowRoot.querySelector(".swiper"),{...t.virtual?{}:{observer:!0},...t,touchEventsTarget:"container",onAny:function(s){"observerUpdate"===s&&e.calcSlideSlots();const i=t.eventsPrefix?`${t.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var a=arguments.length,r=new Array(a>1?a-1:0),n=1;n"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:p,pagination:c,navigation:u,scrollbar:m,virtual:h,thumbs:f}=t;let g,v,w,b,y,x,E,S;a.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&p.thumbs&&!p.thumbs.swiper&&(g=!0),a.includes("controller")&&i.controller&&i.controller.control&&p.controller&&!p.controller.control&&(v=!0),a.includes("pagination")&&i.pagination&&(i.pagination.el||o)&&(p.pagination||!1===p.pagination)&&c&&!c.el&&(w=!0),a.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||l)&&(p.scrollbar||!1===p.scrollbar)&&m&&!m.el&&(b=!0),a.includes("navigation")&&i.navigation&&(i.navigation.prevEl||n)&&(i.navigation.nextEl||r)&&(p.navigation||!1===p.navigation)&&u&&!u.prevEl&&!u.nextEl&&(y=!0);const T=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),p[e].prevEl=void 0,p[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),p[e].el=void 0,t[e].el=void 0))};a.includes("loop")&&t.isElement&&(p.loop&&!i.loop?x=!0:!p.loop&&i.loop?E=!0:S=!0),d.forEach((e=>{if(we(p[e])&&we(i[e]))Object.assign(p[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||T(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?p[e]=i[e]:!1===t&&T(e)}})),d.includes("controller")&&!v&&t.controller&&t.controller.control&&p.controller&&p.controller.control&&(t.controller.control=p.controller.control),a.includes("children")&&s&&h&&p.virtual.enabled?(h.slides=s,h.update(!0)):a.includes("virtual")&&h&&p.virtual.enabled&&(s&&(h.slides=s),h.update(!0)),a.includes("children")&&s&&p.loop&&(S=!0),g&&f.init()&&f.update(!0);v&&(t.controller.control=p.controller.control),w&&(!t.isElement||o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-pagination"),o.part.add("pagination"),t.el.appendChild(o)),o&&(p.pagination.el=o),c.init(),c.render(),c.update()),b&&(!t.isElement||l&&"string"!=typeof l||(l=document.createElement("div"),l.classList.add("swiper-scrollbar"),l.part.add("scrollbar"),t.el.appendChild(l)),l&&(p.scrollbar.el=l),m.init(),m.updateSize(),m.setTranslate()),y&&(t.isElement&&(r&&"string"!=typeof r||(r=document.createElement("div"),r.classList.add("swiper-button-next"),r.innerHTML=t.hostEl.constructor.nextButtonSvg,r.part.add("button-next"),t.el.appendChild(r)),n&&"string"!=typeof n||(n=document.createElement("div"),n.classList.add("swiper-button-prev"),n.innerHTML=t.hostEl.constructor.prevButtonSvg,n.part.add("button-prev"),t.el.appendChild(n))),r&&(p.navigation.nextEl=r),n&&(p.navigation.prevEl=n),u.init(),u.update()),a.includes("allowSlideNext")&&(t.allowSlideNext=i.allowSlideNext),a.includes("allowSlidePrev")&&(t.allowSlidePrev=i.allowSlidePrev),a.includes("direction")&&t.changeDirection(i.direction,!1),(x||S)&&t.loopDestroy(),(E||S)&&t.loopCreate(),t.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[ye(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return ve.filter((e=>e.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}ve.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(Le.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.initialized&&this.updateSwiperOnPropChange(e,t)}}))}));class ze extends Me{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(Pe(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{ve.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",Le),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",ze))}(); +//# sourceMappingURL=swiper-element-bundle.min.js.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-element-bundle.min.js.map b/source/vendor/swiper-bundle/swiper-element-bundle.min.js.map new file mode 100644 index 0000000..f81c554 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","extend$1","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","support","deviceCached","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","find","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","paramsList","isObject","extend","attrToProp","attrName","l","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","parentObjName","subObjName","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","localStyles","linkEl","needsPagination","needsScrollbar","initialize","_this","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","configurable","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-element-bundle.min.mjs b/source/vendor/swiper-bundle/swiper-element-bundle.min.mjs new file mode 100644 index 0000000..fef87ae --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import"./swiper-bundle.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";import{S as Swiper}from"./shared/swiper-core.min.mjs";const SwiperCSS=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}",SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,arrowSvg='\n ',addStyle=(e,i)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(i),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=i,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return arrowSvg}static get prevButtonSvg(){return arrowSvg.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,i=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=i.length?Math.max(...i)+1:0,this.rendered)if(this.slideSlots>e)for(let i=e;i=0;i-=1)i>this.slideSlots&&e[i].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const i=document.createElement("link");i.rel="stylesheet",i.href=e,this.shadowRoot.appendChild(i)}));const i=document.createElement("div");i.classList.add("swiper"),i.part="container",i.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,i)=>`\n \n \n \n `)).join("")}\n
\n \n ${needsNavigation(this.passedParams)?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${needsPagination(this.passedParams)?'\n
\n ':""}\n ${needsScrollbar(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(i),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:i,passedParams:t}=getParams(this);this.swiperParams=i,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...i.virtual?{}:{observer:!0},...i,touchEventsTarget:"container",onAny:function(t){"observerUpdate"===t&&e.calcSlideSlots();const s=i.eventsPrefix?`${i.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase();for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;oe.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}paramsList.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(i){this.passedParams||(this.passedParams={}),this.passedParams[e]=i,this.initialized&&this.updateSwiperOnPropChange(e,i)}}))}));class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element-bundle.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-element-bundle.min.mjs.map b/source/vendor/swiper-bundle/swiper-element-bundle.min.mjs.map new file mode 100644 index 0000000..ef1afa0 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.mjs.mjs","names":["paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","Swiper","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","arrowSvg","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","nextButtonSvg","prevButtonSvg","replace","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","forEach","url","linkEl","href","el","classList","add","part","innerHTML","from","_","index","passedParams","initialize","_this","initialized","params","swiperParams","init","virtual","observer","touchEventsTarget","onAny","name","eventName","eventsPrefix","toLowerCase","_len","arguments","args","_key","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-element-bundle.mjs b/source/vendor/swiper-bundle/swiper-element-bundle.mjs new file mode 100644 index 0000000..10811c9 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element-bundle.mjs @@ -0,0 +1,286 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import './swiper-bundle.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; +import { S as Swiper } from './shared/swiper-core.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const arrowSvg = ` + `; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/source/vendor/swiper-bundle/swiper-element.d.ts b/source/vendor/swiper-bundle/swiper-element.d.ts new file mode 100644 index 0000000..a119a30 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element.d.ts @@ -0,0 +1,444 @@ +// @ts-ignore +import { Swiper, SwiperOptions } from './types/index.d.ts'; + +declare const register: () => void; + +// prettier-ignore +interface SwiperContainerEventMap extends Omit { + /** + * Event will be fired in when autoplay started + */ + autoplaystart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when autoplay stopped + */ + autoplaystop: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay pause + */ + autoplaypause: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay resume + */ + autoplayresume: CustomEvent<[swiper: Swiper]>; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplaytimeleft: CustomEvent<[swiper: Swiper, timeLeft: number, percentage: number]>; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on window hash change + */ + hashchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper updates the hash + */ + hashset: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on key press + */ + keypress: CustomEvent<[swiper: Swiper, keyCode: string]>;/** + * Event will be fired on mousewheel scroll + */ + scroll: CustomEvent<[swiper: Swiper, event: WheelEvent]>;/** + * Event will be fired after pagination rendered + */ + paginationrender: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired when pagination updated + */ + paginationupdate: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired on pagination hide + */ + paginationhide: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on pagination show + */ + paginationshow: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on navigation hide + */ + navigationhide: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation show + */ + navigationshow: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation prev button click + */ + navigationprev: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation next button click + */ + navigationnext: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbardragstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbardragmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbardragend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>;/** + * Event will be fired on zoom change + */ + zoomchange: CustomEvent<[swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement]>; + + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: CustomEvent<[false, + * // other parameters + * }]>; + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: CustomEvent<[{ + * init: function { + * // do something + * }, + * } + * })]>; + * ``` + */ + init: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before Swiper destroyed + */ + beforedestroy: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesupdated: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when currently active slide is changed + */ + slidechange: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slidechangetransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slidechangetransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slidenexttransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slidenexttransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slideprevtransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slideprevtransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of transition. + */ + transitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after transition. + */ + transitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchmoveopposite: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + slidermove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubletap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: CustomEvent<[swiper: Swiper, progress: number]>; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachbeginning: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper reach last slide + */ + reachend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + settranslate: CustomEvent<[swiper: Swiper, translate: number]>; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + settransition: CustomEvent<[swiper: Swiper, transition: number]>; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerupdate: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before "loop fix" + */ + beforeloopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after "loop fix" + */ + loopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: CustomEvent<[swiper: Swiper, breakpointParams: SwiperOptions]>; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + + + /** + * Event will fired on active index change + */ + activeindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on snap index change + */ + snapindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on real index change + */ + realindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right after initialization + */ + afterinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right before initialization + */ + beforeinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before resize handler + */ + beforeresize: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before slide change transition start + */ + beforeslidechangestart: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before transition start + */ + beforetransitionstart: CustomEvent<[swiper: Swiper, speed: number, internal: any]>; // what is internal? + /** + * Event will fired on direction change + */ + changedirection: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleclick: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + /** + * Event will be fired on swiper destroy + */ + destroy: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on momentum bounce + */ + momentumbounce: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideresettransitionstart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideresettransitionend: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired with first touch/drag move + */ + sliderfirstmove: CustomEvent<[swiper: Swiper, event: TouchEvent]>; + /** + * Event will be fired when number of slides has changed + */ + slideslengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when slides grid has changed + */ + slidesgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when snap grid has changed + */ + snapgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired after swiper.update() call + */ + update: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: CustomEvent<[swiper: Swiper]>; + +} + +interface SwiperContainer extends HTMLElement {} +interface SwiperContainer extends SwiperOptions { + swiper: Swiper; + initialize: () => void; + injectStyles: string[]; + injectStylesUrls: string[]; + eventsPrefix: string; + addEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +interface SwiperSlide extends HTMLElement { + lazy: string | boolean; +} + +declare global { + interface HTMLElementTagNameMap { + 'swiper-container': SwiperContainer; + 'swiper-slide': SwiperSlide; + } +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/source/vendor/swiper-bundle/swiper-element.js b/source/vendor/swiper-bundle/swiper-element.js new file mode 100644 index 0000000..3af4cc2 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element.js @@ -0,0 +1,4938 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + /* underscore in name -> watch for changes */ + const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const arrowSvg = ` + `; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/source/vendor/swiper-bundle/swiper-element.min.js b/source/vendor/swiper-bundle/swiper-element.min.js new file mode 100644 index 0000000..4699bb7 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function h(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function f(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let b,S,T;function y(){return b||(b=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),b}function x(e){return void 0===e&&(e={}),S||(S=function(e){let{userAgent:t}=void 0===e?{}:e;const s=y(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),f="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!f&&(o.os="android",o.android=!0),(p||h||u)&&(o.os="ios",o.ios=!0),o}(e)),S}function E(){return T||(T=function(){const e=n(),t=x();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=i();return{isSafari:s||a,needPerspectiveFix:s,need3dFix:a||r&&t.ios,isWebView:r}}()),T}var C={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const M=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const P=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const k=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},L=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},z=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&L(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&L(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?x=parseFloat(x.replace("%",""))/100*n:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let k;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&f.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-n;f=f.map((e=>e<=0?-b:e>t?t+S:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{f[t]=e-s})),m.forEach(((e,t)=>{m[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:f,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-f[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),f.length!==T&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==y&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],m=u>=0&&u1&&h<=t.size||u<=0&&h>=t.size;m&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e)),M(l,m,s.slideVisibleClass),M(l,f,s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>h(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(a||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{P(e,e===l,s.slideActiveClass),P(e,e===c,s.slideNextClass),P(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&z(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(h?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let b;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),b=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{f[e?"scrollLeft":"scrollTop"]=s}))):f[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,b),0===t?n.transitionEnd(s,b):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,b))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let o=r.params.slidesPerView;"auto"===o?o=r.slidesPerViewDynamic():(o=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&o%2==0&&(o+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),h=n.map((e=>p(e)));let f=n[h.indexOf(u)-1];if(void 0===f&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(f=n[e>0?e-1:e])}let m=0;if(void 0!==f&&(m=a.indexOf(f),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var G={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{h(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):y=n;const x="next"===i||!i,E="prev"===i||!i;let C=0,M=0;const P=b?Math.ceil(d.length/h.grid.rows):d.length,k=(b?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(k=0;t-=1)d[t].column===e&&S.push(t)}else S.push(P-t-1)}}else if(k+v>P-w){M=Math.max(k-(P-2*w),g);for(let e=0;e{e.column===t&&T.push(s)})):T.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&S.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===h.slidesPerView?l.updateSlides():b&&(S.length>0&&E||T.length>0&&x)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),h.watchSlidesProgress&&l.updateSlidesOffset(),s)if(S.length>0&&E){if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y+C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y+Math.ceil(C),0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=b?S.length/h.grid.rows:S.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(T.length>0&&x)if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y-M]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y-M,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=b?T.length/h.grid.rows:T.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===h.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function D(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function N(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void D(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...element.assignedElements()].includes(e);return s}(p,t.wrapperEl))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,h=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&h&&(p=h[0]);const f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(f,p):p.closest(f)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!D(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function V(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,h=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=h);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(ha.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=h;const f=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(f**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(f))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling||"touchmove"===p.type&&r.preventTouchMoveFromPointerMove)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?f:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const b=s.params.loop&&!n.cssMode,S="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(b&&S&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&b&&S&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let T=!0,y=n.resistanceRatio;if(n.touchReleaseOnEdges&&(y=0),v>0?(b&&S&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(T=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**y))):v<0&&(b&&S&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function B(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),h=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),h<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let f;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,f=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:f});const m=f>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&f=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,b=null;n.rewind&&(t.isBeginning?b=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const S=(f-c[v])/g,T=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(S>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+T):t.slideTo(v)),"prev"===t.swipeDirection&&(S>1-n.longSwipesRatio?t.slideTo(v+T):null!==b&&S<0&&Math.abs(S)>n.longSwipesRatio?t.slideTo(b):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+T):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+T),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:v))}}function $(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function F(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function j(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function R(e){const t=this;k(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function H(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const W=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;n&&"string"!=typeof n&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",$,!0):e[c]("observerUpdate",$,!0),n[d]("load",e.onLoad,{capture:!0}))};const q=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var Y={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function X(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const U={eventsEmitter:C,update:I,translate:O,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),_({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),_({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:A,loop:G,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=N.bind(e),e.onTouchMove=V.bind(e),e.onTouchEnd=B.bind(e),e.onDocumentTouchStart=H.bind(e),t.cssMode&&(e.onScroll=j.bind(e)),e.onClick=F.bind(e),e.onLoad=R.bind(e),W(e,"on")},detachEvents:function(){W(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=q(e,i),d=q(e,o),p=e.params.grabCursor,u=o.grabCursor,h=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),p&&!u?e.unsetGrabCursor():!p&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const f=o.direction&&o.direction!==i.direction,m=i.loop&&(o.slidesPerView!==i.slidesPerView||f),v=i.loop;f&&s&&e.changeDirection(),c(e.params,o);const g=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),h&&!g?e.disable():!h&&g&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!v&&w?(e.loopCreate(t),e.updateSlides()):v&&!w&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},K={};class Z{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new Z(i))})),e}const o=this;o.__swiper__=!0,o.support=y(),o.device=x({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:X(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},Y,l);return o.params=c({},d,K,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(h(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?Math.ceil(i[o].swiperSlideSize):0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&k(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return h(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),h(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?k(t,e):e.addEventListener("load",(e=>{k(t,e.target)}))})),z(t),t.initialized=!0,z(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),n&&n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(K,e)}static get extendedDefaults(){return K}static get defaults(){return Y}static installModule(e){Z.prototype.__modules__||(Z.prototype.__modules__=[]);const t=Z.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>Z.installModule(e))),Z):(Z.installModule(e),Z)}}Object.keys(U).forEach((e=>{Object.keys(U[e]).forEach((t=>{Z.prototype[t]=U[e][t]}))})),Z.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]);const J=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function Q(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function ee(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>s.indexOf(e)<0)).forEach((s=>{void 0===e[s]?e[s]=t[s]:Q(t[s])&&Q(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:ee(e[s],t[s]):e[s]=t[s]}))}function te(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}const se=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},ie=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function re(e,t,s){const i={},r={};ee(i,Y);const n=[...J,"on"],a=n.map((e=>e.replace(/_/,"")));n.forEach((t=>{t=t.replace("_",""),void 0!==e[t]&&(r[t]=e[t])}));const o=[...e.attributes];return"string"==typeof t&&void 0!==s&&o.push({name:t,value:Q(s)?{...s}:s}),o.forEach((e=>{const t=ie.filter((t=>0===e.name.indexOf(`${t}-`)))[0];if(t){const s=te(t),i=te(e.name.split(`${t}-`)[1]);void 0===r[s]&&(r[s]={}),!0===r[s]&&(r[s]={enabled:!0}),r[s][i]=se(e.value)}else{const t=te(e.name);if(!a.includes(t))return;const s=se(e.value);r[t]&&ie.includes(e.name)&&!Q(s)?(r[t].constructor!==Object&&(r[t]={}),r[t].enabled=!!s):r[t]=s}})),ee(i,r),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:r}}const ne=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}";const ae="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,oe='\n ',le=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class de extends ae{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return oe}static get prevButtonSvg(){return oe.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[ne,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&le(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)}));const t=document.createElement("div");var s;t.classList.add("swiper"),t.part="container",t.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,t)=>`\n \n \n \n `)).join("")}\n
\n \n ${s=this.passedParams,void 0===s&&(s={}),s.navigation&&void 0===s.navigation.nextEl&&void 0===s.navigation.prevEl?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${function(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
\n ':""}\n ${function(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:t,passedParams:s}=re(this);this.swiperParams=t,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new Z(this.shadowRoot.querySelector(".swiper"),{...t.virtual?{}:{observer:!0},...t,touchEventsTarget:"container",onAny:function(s){"observerUpdate"===s&&e.calcSlideSlots();const i=t.eventsPrefix?`${t.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var r=arguments.length,n=new Array(r>1?r-1:0),a=1;a"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:c,pagination:p,navigation:u,scrollbar:h,virtual:f,thumbs:m}=t;let v,g,w,b,S,T,y,x;r.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(v=!0),r.includes("controller")&&i.controller&&i.controller.control&&c.controller&&!c.controller.control&&(g=!0),r.includes("pagination")&&i.pagination&&(i.pagination.el||l)&&(c.pagination||!1===c.pagination)&&p&&!p.el&&(w=!0),r.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||o)&&(c.scrollbar||!1===c.scrollbar)&&h&&!h.el&&(b=!0),r.includes("navigation")&&i.navigation&&(i.navigation.prevEl||a)&&(i.navigation.nextEl||n)&&(c.navigation||!1===c.navigation)&&u&&!u.prevEl&&!u.nextEl&&(S=!0);const E=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),c[e].prevEl=void 0,c[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),c[e].el=void 0,t[e].el=void 0))};r.includes("loop")&&t.isElement&&(c.loop&&!i.loop?T=!0:!c.loop&&i.loop?y=!0:x=!0),d.forEach((e=>{if(Q(c[e])&&Q(i[e]))Object.assign(c[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||E(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?c[e]=i[e]:!1===t&&E(e)}})),d.includes("controller")&&!g&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),r.includes("children")&&s&&f&&c.virtual.enabled?(f.slides=s,f.update(!0)):r.includes("virtual")&&f&&c.virtual.enabled&&(s&&(f.slides=s),f.update(!0)),r.includes("children")&&s&&c.loop&&(x=!0),v&&m.init()&&m.update(!0);g&&(t.controller.control=c.controller.control),w&&(!t.isElement||l&&"string"!=typeof l||(l=document.createElement("div"),l.classList.add("swiper-pagination"),l.part.add("pagination"),t.el.appendChild(l)),l&&(c.pagination.el=l),p.init(),p.render(),p.update()),b&&(!t.isElement||o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-scrollbar"),o.part.add("scrollbar"),t.el.appendChild(o)),o&&(c.scrollbar.el=o),h.init(),h.updateSize(),h.setTranslate()),S&&(t.isElement&&(n&&"string"!=typeof n||(n=document.createElement("div"),n.classList.add("swiper-button-next"),n.innerHTML=t.hostEl.constructor.nextButtonSvg,n.part.add("button-next"),t.el.appendChild(n)),a&&"string"!=typeof a||(a=document.createElement("div"),a.classList.add("swiper-button-prev"),a.innerHTML=t.hostEl.constructor.prevButtonSvg,a.part.add("button-prev"),t.el.appendChild(a))),n&&(c.navigation.nextEl=n),a&&(c.navigation.prevEl=a),u.init(),u.update()),r.includes("allowSlideNext")&&(t.allowSlideNext=i.allowSlideNext),r.includes("allowSlidePrev")&&(t.allowSlidePrev=i.allowSlidePrev),r.includes("direction")&&t.changeDirection(i.direction,!1),(T||x)&&t.loopDestroy(),(y||x)&&t.loopCreate(),t.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[te(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return J.filter((e=>e.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}J.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(de.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.initialized&&this.updateSwiperOnPropChange(e,t)}}))}));class ce extends ae{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(le(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{J.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",de),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",ce))}(); +//# sourceMappingURL=swiper-element.min.js.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-element.min.js.map b/source/vendor/swiper-bundle/swiper-element.min.js.map new file mode 100644 index 0000000..e0f34c9 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","extend$1","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","slideEl","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","parent","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parentElement","elementParents","disconnect","paramsList","isObject","extend","attrToProp","attrName","l","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","parentObjName","subObjName","scrollbar","pagination","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","textContent","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","render","localStyles","linkEl","part","innerHTML","needsPagination","needsScrollbar","initialize","_this","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","defineProperty","configurable","get","set","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-element.min.mjs b/source/vendor/swiper-bundle/swiper-element.min.mjs new file mode 100644 index 0000000..e31aece --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";const SwiperCSS=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}",SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,arrowSvg='\n ',addStyle=(e,s)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(s),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=s,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return arrowSvg}static get prevButtonSvg(){return arrowSvg.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,s=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=s.length?Math.max(...s)+1:0,this.rendered)if(this.slideSlots>e)for(let s=e;s=0;s-=1)s>this.slideSlots&&e[s].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const s=document.createElement("link");s.rel="stylesheet",s.href=e,this.shadowRoot.appendChild(s)}));const s=document.createElement("div");s.classList.add("swiper"),s.part="container",s.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,s)=>`\n \n \n \n `)).join("")}\n
\n \n ${needsNavigation(this.passedParams)?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${needsPagination(this.passedParams)?'\n
\n ':""}\n ${needsScrollbar(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(s),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:s,passedParams:t}=getParams(this);this.swiperParams=s,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...s.virtual?{}:{observer:!0},...s,touchEventsTarget:"container",onAny:function(t){"observerUpdate"===t&&e.calcSlideSlots();const i=s.eventsPrefix?`${s.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase();for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;oe.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}paramsList.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(s){this.passedParams||(this.passedParams={}),this.passedParams[e]=s,this.initialized&&this.updateSwiperOnPropChange(e,s)}}))}));class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-element.min.mjs.map b/source/vendor/swiper-bundle/swiper-element.min.mjs.map new file mode 100644 index 0000000..41113f3 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.mjs.mjs","names":["Swiper","paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","arrowSvg","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","nextButtonSvg","prevButtonSvg","replace","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","forEach","url","linkEl","href","el","classList","add","part","innerHTML","from","_","index","passedParams","initialize","_this","initialized","params","swiperParams","init","virtual","observer","touchEventsTarget","onAny","name","eventName","eventsPrefix","toLowerCase","_len","arguments","args","_key","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper-element.mjs b/source/vendor/swiper-bundle/swiper-element.mjs new file mode 100644 index 0000000..8a25a8f --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-element.mjs @@ -0,0 +1,285 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const arrowSvg = ` + `; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/source/vendor/swiper-bundle/swiper-react.d.ts b/source/vendor/swiper-bundle/swiper-react.d.ts new file mode 100644 index 0000000..a5d3e60 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-react.d.ts @@ -0,0 +1,501 @@ +import * as React from 'react'; + +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +type SwiperProps = Omit< + React.HTMLAttributes, + | 'onProgress' + | 'onClick' + | 'onTouchEnd' + | 'onTouchMove' + | 'onTouchStart' + | 'onTransitionEnd' + | 'onKeyPress' + | 'onDoubleClick' + | 'onScroll' + | 'onResize' +> & + SwiperOptions & { + /** + * Swiper container tag + * + * @default 'div' + */ + tag?: string; + + /** + * Swiper wrapper tag + * + * @default 'div' + */ + wrapperTag?: string; + + /** + * Get Swiper instance + */ + onSwiper?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in when autoplay started + */ + onAutoplayStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + onAutoplayStop?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + onAutoplayPause?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + onAutoplayResume?: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + onAutoplayTimeLeft?: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + onAutoplay?: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + onHashChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + onHashSet?: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + onKeyPress?: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired on mousewheel scroll + */ + onScroll?: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired after pagination rendered + */ + onPaginationRender?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + onPaginationUpdate?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + onPaginationHide?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + onPaginationShow?: (swiper: SwiperClass) => void;/** + * Event will be fired on navigation hide + */ + onNavigationHide?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + onNavigationShow?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + onNavigationPrev?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + onNavigationNext?: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + onScrollbarDragStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + onScrollbarDragMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + onScrollbarDragEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + onZoomChange?: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + onInit?: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + onBeforeDestroy?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + onSlidesUpdated?: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + onSlideChange?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + onSlideChangeTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + onSlideChangeTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + onSlideNextTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + onSlideNextTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + onSlidePrevTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + onSlidePrevTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + onTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + onTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + onTouchStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + onTouchMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + onTouchMoveOpposite?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + onSliderMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + onTouchEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + onDoubleTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + onProgress?: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + onReachBeginning?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + onReachEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + onToEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + onFromEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + onSetTranslate?: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + onSetTransition?: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + onResize?: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + onObserverUpdate?: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + onBeforeLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + onLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + onBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + onActiveIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + onSnapIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + onRealIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + onAfterInit?: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + onBeforeInit?: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + onBeforeResize?: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + onBeforeSlideChangeStart?: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + onBeforeTransitionStart?: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + onChangeDirection?: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + onDoubleClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + onDestroy?: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + onMomentumBounce?: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + onOrientationchange?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + onSlideResetTransitionStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + onSlideResetTransitionEnd?: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + onSliderFirstMove?: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + onSlidesLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + onSlidesGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + onSnapGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + onUpdate?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + onLock?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + onUnlock?: (swiper: SwiperClass) => void; + + }; + +interface SlideData { + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +} + +type SwiperSlideProps = Omit, 'children'> & { + /** + * Slide tag + * + * @default 'div' + */ + tag?: string; + + /** + * Enables additional wrapper required for zoom mode + * + * @default false + */ + zoom?: boolean; + + /** + * Adds lazy preloader to the slide + * + * @default false + */ + lazy?: boolean; + + /** + * Slide's index in slides array/collection + * + * @default false + */ + virtualIndex?: number; + + /** + * Slide's child element or render function + * + * @default undefined + */ + children?: React.ReactNode | ((slideData: SlideData) => React.ReactNode); +}; + +interface SwiperRef extends React.HTMLAttributes { + swiper: SwiperClass; +} + +declare const Swiper: React.FunctionComponent< + React.RefAttributes & React.PropsWithChildren +>; +declare const SwiperSlide: React.FunctionComponent; + +declare const useSwiper: () => SwiperClass; +declare const useSwiperSlide: () => SlideData; + +export { + Swiper, + SwiperSlide, + SwiperProps, + SwiperSlideProps, + SwiperRef, + useSwiper, + useSwiperSlide, + SwiperClass, +}; diff --git a/source/vendor/swiper-bundle/swiper-react.mjs b/source/vendor/swiper-bundle/swiper-react.mjs new file mode 100644 index 0000000..a7c4007 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-react.mjs @@ -0,0 +1,394 @@ +/** + * Swiper React 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs'; +import { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs'; + +function _extends() { + _extends = Object.assign ? Object.assign.bind() : 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 isChildSwiperSlide(child) { + return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide'); +} +function processChildren(c) { + const slides = []; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.children) { + processChildren(child.props.children).forEach(slide => slides.push(slide)); + } + }); + return slides; +} +function getChildren(c) { + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.slot && slots[child.props.slot]) { + slots[child.props.slot].push(child); + } else if (child.props && child.props.children) { + const foundSlides = processChildren(child.props.children); + if (foundSlides.length > 0) { + foundSlides.forEach(slide => slides.push(slide)); + } else { + slots['container-end'].push(child); + } + } else { + slots['container-end'].push(child); + } + }); + return { + slides, + slots + }; +} + +function renderVirtual(swiper, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiper.isHorizontal() ? { + [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiper.params.loop ? -slides.length : 0; + const loopTo = swiper.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper, + style, + key: child.props.virtualIndex || child.key || `slide-${index}` + }); + }); +} + +function useIsomorphicLayoutEffect(callback, deps) { + // eslint-disable-next-line + if (typeof window === 'undefined') return useEffect(callback, deps); + return useLayoutEffect(callback, deps); +} + +const SwiperSlideContext = /*#__PURE__*/createContext(null); +const useSwiperSlide = () => { + return useContext(SwiperSlideContext); +}; +const SwiperContext = /*#__PURE__*/createContext(null); +const useSwiper = () => { + return useContext(SwiperContext); +}; + +const Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) { + let { + className, + tag: Tag = 'div', + wrapperTag: WrapperTag = 'div', + children, + onSwiper, + ...rest + } = _temp === void 0 ? {} : _temp; + let eventsAssigned = false; + const [containerClasses, setContainerClasses] = useState('swiper'); + const [virtualData, setVirtualData] = useState(null); + const [breakpointChanged, setBreakpointChanged] = useState(false); + const initializedRef = useRef(false); + const swiperElRef = useRef(null); + const swiperRef = useRef(null); + const oldPassedParamsRef = useRef(null); + const oldSlides = useRef(null); + const nextElRef = useRef(null); + const prevElRef = useRef(null); + const paginationElRef = useRef(null); + const scrollbarElRef = useRef(null); + const { + params: swiperParams, + passedParams, + rest: restProps, + events + } = getParams(rest); + const { + slides, + slots + } = getChildren(children); + const onBeforeBreakpoint = () => { + setBreakpointChanged(!breakpointChanged); + }; + Object.assign(swiperParams.on, { + _containerClasses(swiper, classes) { + setContainerClasses(classes); + } + }); + const initSwiper = () => { + // init swiper + Object.assign(swiperParams.on, events); + eventsAssigned = true; + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.current = new Swiper$1(passParams); + if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) { + swiperRef.current.virtual.slides = slides; + const extendWith = { + cache: false, + slides, + renderExternal: setVirtualData, + renderExternalUpdate: false + }; + extend(swiperRef.current.params.virtual, extendWith); + extend(swiperRef.current.originalParams.virtual, extendWith); + } + }; + if (!swiperElRef.current) { + initSwiper(); + } + + // Listen for breakpoints change + if (swiperRef.current) { + swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint); + } + const attachEvents = () => { + if (eventsAssigned || !events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.on(eventName, events[eventName]); + }); + }; + const detachEvents = () => { + if (!events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.off(eventName, events[eventName]); + }); + }; + useEffect(() => { + return () => { + if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint); + }; + }); + + // set initialized flag + useEffect(() => { + if (!initializedRef.current && swiperRef.current) { + swiperRef.current.emitSlidesClasses(); + initializedRef.current = true; + } + }); + + // mount swiper + useIsomorphicLayoutEffect(() => { + if (externalElRef) { + externalElRef.current = swiperElRef.current; + } + if (!swiperElRef.current) return; + if (swiperRef.current.destroyed) { + initSwiper(); + } + mountSwiper({ + el: swiperElRef.current, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + paginationEl: paginationElRef.current, + scrollbarEl: scrollbarElRef.current, + swiper: swiperRef.current + }, swiperParams); + if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current); + // eslint-disable-next-line + return () => { + if (swiperRef.current && !swiperRef.current.destroyed) { + swiperRef.current.destroy(true, false); + } + }; + }, []); + + // watch for params change + useIsomorphicLayoutEffect(() => { + attachEvents(); + const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key); + oldPassedParamsRef.current = passedParams; + oldSlides.current = slides; + if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) { + updateSwiper({ + swiper: swiperRef.current, + slides, + passedParams, + changedParams, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + scrollbarEl: scrollbarElRef.current, + paginationEl: paginationElRef.current + }); + } + return () => { + detachEvents(); + }; + }); + + // update on virtual update + useIsomorphicLayoutEffect(() => { + updateOnVirtualData(swiperRef.current); + }, [virtualData]); + + // bypass swiper instance to slides + function renderSlides() { + if (swiperParams.virtual) { + return renderVirtual(swiperRef.current, slides, virtualData); + } + return slides.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper: swiperRef.current, + swiperSlideIndex: index + }); + }); + } + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: swiperElRef, + className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`) + }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, { + value: swiperRef.current + }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, { + className: wrapperClass(swiperParams.wrapperClass) + }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { + ref: prevElRef, + className: "swiper-button-prev" + }), /*#__PURE__*/React.createElement("div", { + ref: nextElRef, + className: "swiper-button-next" + })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: scrollbarElRef, + className: "swiper-scrollbar" + }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: paginationElRef, + className: "swiper-pagination" + }), slots['container-end'])); +}); +Swiper.displayName = 'Swiper'; + +const SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) { + let { + tag: Tag = 'div', + children, + className = '', + swiper, + zoom, + lazy, + virtualIndex, + swiperSlideIndex, + ...rest + } = _temp === void 0 ? {} : _temp; + const slideElRef = useRef(null); + const [slideClasses, setSlideClasses] = useState('swiper-slide'); + const [lazyLoaded, setLazyLoaded] = useState(false); + function updateClasses(_s, el, classNames) { + if (el === slideElRef.current) { + setSlideClasses(classNames); + } + } + useIsomorphicLayoutEffect(() => { + if (typeof swiperSlideIndex !== 'undefined') { + slideElRef.current.swiperSlideIndex = swiperSlideIndex; + } + if (externalRef) { + externalRef.current = slideElRef.current; + } + if (!slideElRef.current || !swiper) { + return; + } + if (swiper.destroyed) { + if (slideClasses !== 'swiper-slide') { + setSlideClasses('swiper-slide'); + } + return; + } + swiper.on('_slideClass', updateClasses); + // eslint-disable-next-line + return () => { + if (!swiper) return; + swiper.off('_slideClass', updateClasses); + }; + }); + useIsomorphicLayoutEffect(() => { + if (swiper && slideElRef.current && !swiper.destroyed) { + setSlideClasses(swiper.getSlideClasses(slideElRef.current)); + } + }, [swiper]); + const slideData = { + isActive: slideClasses.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.indexOf('swiper-slide-next') >= 0 + }; + const renderChildren = () => { + return typeof children === 'function' ? children(slideData) : children; + }; + const onLoad = () => { + setLazyLoaded(true); + }; + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: slideElRef, + className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`), + "data-swiper-slide-index": virtualIndex, + onLoad: onLoad + }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, /*#__PURE__*/React.createElement("div", { + className: "swiper-zoom-container", + "data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader" + }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader" + }))); +}); +SwiperSlide.displayName = 'SwiperSlide'; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/source/vendor/swiper-bundle/swiper-vars.less b/source/vendor/swiper-bundle/swiper-vars.less new file mode 100644 index 0000000..a068f6d --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-vars.less @@ -0,0 +1 @@ +@themeColor: #007aff; diff --git a/source/vendor/swiper-bundle/swiper-vars.scss b/source/vendor/swiper-bundle/swiper-vars.scss new file mode 100644 index 0000000..819dec4 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-vars.scss @@ -0,0 +1 @@ +$themeColor: #007aff !default; diff --git a/source/vendor/swiper-bundle/swiper-vue.d.ts b/source/vendor/swiper-bundle/swiper-vue.d.ts new file mode 100644 index 0000000..ce28455 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-vue.d.ts @@ -0,0 +1,866 @@ +import type { + A11yOptions, + AutoplayOptions, + ControllerOptions, + CoverflowEffectOptions, + CubeEffectOptions, + FadeEffectOptions, + FlipEffectOptions, + CreativeEffectOptions, + CardsEffectOptions, + HashNavigationOptions, + HistoryOptions, + KeyboardOptions, + MousewheelOptions, + NavigationOptions, + PaginationOptions, + ParallaxOptions, + ScrollbarOptions, + ThumbsOptions, + VirtualOptions, + ZoomOptions, + FreeModeOptions, + GridOptions, +} from './types/index.d.ts'; +import { ComponentOptionsMixin, DefineComponent, PropType, Ref } from 'vue'; +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +declare const Swiper: DefineComponent< + { + tag: { + type: StringConstructor; + default: string; + }; + wrapperTag: { + type: StringConstructor; + default: string; + }; + modules: { + type: ArrayConstructor; + default: undefined; + }; + init: { + type: BooleanConstructor; + default: undefined; + }; + direction: { + type: PropType; + default: SwiperOptions['direction']; + }; + oneWayMovement: { + type: PropType; + default: SwiperOptions['oneWayMovement']; + }; + swiperElementNodeName: { + type: PropType; + default: SwiperOptions['swiperElementNodeName']; + }; + touchEventsTarget: { + type: PropType; + default: undefined; + }; + initialSlide: { + type: NumberConstructor; + default: undefined; + }; + speed: { type: NumberConstructor; default: undefined }; + cssMode: { type: BooleanConstructor; default: undefined }; + updateOnWindowResize: { + type: BooleanConstructor; + default: undefined; + }; + resizeObserver: { + type: BooleanConstructor; + default: undefined; + }; + nested: { type: BooleanConstructor; default: undefined }; + focusableElements: { + type: StringConstructor; + default: undefined; + }; + width: { type: NumberConstructor; default: undefined }; + height: { type: NumberConstructor; default: undefined }; + preventInteractionOnTransition: { + type: BooleanConstructor; + default: undefined; + }; + userAgent: { type: StringConstructor; default: undefined }; + url: { type: StringConstructor; default: undefined }; + edgeSwipeDetection: { + type: BooleanConstructor | StringConstructor; + default: undefined; + }; + edgeSwipeThreshold: { + type: NumberConstructor; + default: undefined; + }; + autoHeight: { + type: BooleanConstructor; + default: undefined; + }; + setWrapperSize: { + type: BooleanConstructor; + default: undefined; + }; + virtualTranslate: { + type: BooleanConstructor; + default: undefined; + }; + effect: { + type: PropType; + default: undefined; + }; + breakpoints: { + type: PropType; + default: undefined; + }; + spaceBetween: { + type: PropType; + default: undefined; + }; + slidesPerView: { + type: PropType; + default: undefined; + }; + maxBackfaceHiddenSlides: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroup: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupSkip: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupAuto: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlides: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlidesBounds: { + type: BooleanConstructor; + default: undefined; + }; + slidesOffsetBefore: { + type: NumberConstructor; + default: undefined; + }; + slidesOffsetAfter: { + type: NumberConstructor; + default: undefined; + }; + normalizeSlideIndex: { + type: BooleanConstructor; + default: undefined; + }; + centerInsufficientSlides: { + type: BooleanConstructor; + default: undefined; + }; + watchOverflow: { + type: BooleanConstructor; + default: undefined; + }; + roundLengths: { + type: BooleanConstructor; + default: undefined; + }; + touchRatio: { + type: NumberConstructor; + default: undefined; + }; + touchAngle: { + type: NumberConstructor; + default: undefined; + }; + simulateTouch: { + type: BooleanConstructor; + default: undefined; + }; + shortSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipesRatio: { + type: NumberConstructor; + default: undefined; + }; + longSwipesMs: { + type: NumberConstructor; + default: undefined; + }; + followFinger: { + type: BooleanConstructor; + default: undefined; + }; + allowTouchMove: { + type: BooleanConstructor; + default: undefined; + }; + threshold: { type: NumberConstructor; default: undefined }; + touchMoveStopPropagation: { + type: BooleanConstructor; + default: undefined; + }; + touchStartPreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchStartForcePreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchReleaseOnEdges: { + type: BooleanConstructor; + default: undefined; + }; + uniqueNavElements: { + type: BooleanConstructor; + default: undefined; + }; + resistance: { + type: BooleanConstructor; + default: undefined; + }; + resistanceRatio: { + type: NumberConstructor; + default: undefined; + }; + watchSlidesProgress: { + type: BooleanConstructor; + default: undefined; + }; + grabCursor: { + type: BooleanConstructor; + default: undefined; + }; + preventClicks: { + type: BooleanConstructor; + default: undefined; + }; + preventClicksPropagation: { + type: BooleanConstructor; + default: undefined; + }; + slideToClickedSlide: { + type: BooleanConstructor; + default: undefined; + }; + loop: { type: BooleanConstructor; default: undefined }; + loopAddBlankSlides: { type: BooleanConstructor; default: undefined }; + loopAdditionalSlides: { + type: NumberConstructor; + default: undefined; + }; + loopPreventsSliding: { type: BooleanConstructor; default: undefined }; + rewind: { type: BooleanConstructor; default: undefined }; + allowSlidePrev: { + type: BooleanConstructor; + default: undefined; + }; + allowSlideNext: { + type: BooleanConstructor; + default: undefined; + }; + swipeHandler: { + type: BooleanConstructor; + default: undefined; + }; + noSwiping: { + type: BooleanConstructor; + default: undefined; + }; + noSwipingClass: { + type: StringConstructor; + default: undefined; + }; + noSwipingSelector: { + type: StringConstructor; + default: undefined; + }; + passiveListeners: { + type: BooleanConstructor; + default: undefined; + }; + containerModifierClass: { + type: StringConstructor; + default: undefined; + }; + slideClass: { + type: StringConstructor; + default: undefined; + }; + slideActiveClass: { + type: StringConstructor; + default: undefined; + }; + slideVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideFullyVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideBlankClass: { + type: StringConstructor; + default: undefined; + }; + slideNextClass: { + type: StringConstructor; + default: undefined; + }; + slidePrevClass: { + type: StringConstructor; + default: undefined; + }; + wrapperClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloaderClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloadPrevNext: { + type: NumberConstructor; + default: undefined; + }; + runCallbacksOnInit: { + type: BooleanConstructor; + default: undefined; + }; + observer: { type: BooleanConstructor; default: undefined }; + observeParents: { + type: BooleanConstructor; + default: undefined; + }; + observeSlideChildren: { + type: BooleanConstructor; + default: undefined; + }; + a11y: { + type: PropType; + default: undefined; + }; + autoplay: { + type: PropType; + default: undefined; + }; + controller: { + type: PropType; + default: undefined; + }; + coverflowEffect: { + type: PropType; + default: undefined; + }; + cubeEffect: { + type: PropType; + default: undefined; + }; + fadeEffect: { + type: PropType; + default: undefined; + }; + flipEffect: { + type: PropType; + default: undefined; + }; + creativeEffect: { + type: PropType; + default: undefined; + }; + cardsEffect: { + type: PropType; + default: undefined; + }; + hashNavigation: { + type: PropType; + default: undefined; + }; + history: { + type: PropType; + default: undefined; + }; + keyboard: { + type: PropType; + default: undefined; + }; + mousewheel: { + type: PropType; + default: undefined; + }; + navigation: { + type: PropType; + default: undefined; + }; + pagination: { + type: PropType; + default: undefined; + }; + parallax: { + type: PropType; + default: undefined; + }; + scrollbar: { + type: PropType; + default: undefined; + }; + thumbs: { type: PropType; default: undefined }; + virtual: { + type: PropType; + default: undefined; + }; + zoom: { + type: PropType; + default: undefined; + }; + freeMode: { + type: PropType; + default: undefined; + }; + grid: { + type: PropType; + default: undefined; + }; + }, + () => JSX.Element, + unknown, + {}, + {}, + ComponentOptionsMixin, + ComponentOptionsMixin, + { + swiper: (swiper: SwiperClass) => void; + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + hashChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + keyPress: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: SwiperClass) => void;/** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + zoomChange: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: SwiperClass) => void; + + } +>; + +declare const SwiperSlide: DefineComponent<{ + tag: { + type: StringConstructor; + default: string; + }; + swiperRef: { type: PropType; required: false }; + lazy: { type: BooleanConstructor; default: false }; + zoom: { type: BooleanConstructor; default: undefined }; + virtualIndex: { + type: StringConstructor | NumberConstructor; + default: undefined; + }; +}>; + +declare const useSwiper: () => Ref; +declare const useSwiperSlide: () => Ref<{ + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +}>; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/source/vendor/swiper-bundle/swiper-vue.mjs b/source/vendor/swiper-bundle/swiper-vue.mjs new file mode 100644 index 0000000..cf5d478 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper-vue.mjs @@ -0,0 +1,830 @@ +/** + * Swiper Vue 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import { h, ref, onUpdated, provide, watch, nextTick, onMounted, onBeforeUnmount, onBeforeUpdate, computed, inject } from 'vue'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, a as getChangedParams, u as updateOnVirtualData, m as mountSwiper } from './shared/update-on-virtual-data.mjs'; +import { e as extend, u as updateSwiper, d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination } from './shared/update-swiper.mjs'; + +function getChildren(originalSlots, slidesRef, oldSlidesRef) { + if (originalSlots === void 0) { + originalSlots = {}; + } + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + const getSlidesFromElements = (els, slotName) => { + if (!Array.isArray(els)) { + return; + } + els.forEach(vnode => { + const isFragment = typeof vnode.type === 'symbol'; + if (slotName === 'default') slotName = 'container-end'; + if (isFragment && vnode.children) { + getSlidesFromElements(vnode.children, slotName); + } else if (vnode.type && (vnode.type.name === 'SwiperSlide' || vnode.type.name === 'AsyncComponentWrapper') || vnode.componentOptions && vnode.componentOptions.tag === 'SwiperSlide') { + slides.push(vnode); + } else if (slots[slotName]) { + slots[slotName].push(vnode); + } + }); + }; + Object.keys(originalSlots).forEach(slotName => { + if (typeof originalSlots[slotName] !== 'function') return; + const els = originalSlots[slotName](); + getSlidesFromElements(els, slotName); + }); + oldSlidesRef.value = slidesRef.value; + slidesRef.value = slides; + return { + slides, + slots + }; +} + +function renderVirtual(swiperRef, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiperRef.value.isHorizontal() ? { + [swiperRef.value.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiperRef.value.params.loop ? -slides.length : 0; + const loopTo = swiperRef.value.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to && slidesToRender.length < slides.length) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map(slide => { + if (!slide.props) slide.props = {}; + if (!slide.props.style) slide.props.style = {}; + slide.props.swiperRef = swiperRef; + slide.props.style = style; + if (slide.type) { + return h(slide.type, { + ...slide.props + }, slide.children); + } else if (slide.componentOptions) { + return h(slide.componentOptions.Ctor, { + ...slide.props + }, slide.componentOptions.children); + } + }); +} + +const Swiper = { + name: 'Swiper', + props: { + tag: { + type: String, + default: 'div' + }, + wrapperTag: { + type: String, + default: 'div' + }, + modules: { + type: Array, + default: undefined + }, + init: { + type: Boolean, + default: undefined + }, + direction: { + type: String, + default: undefined + }, + oneWayMovement: { + type: Boolean, + default: undefined + }, + swiperElementNodeName: { + type: String, + default: 'SWIPER-CONTAINER' + }, + touchEventsTarget: { + type: String, + default: undefined + }, + initialSlide: { + type: Number, + default: undefined + }, + speed: { + type: Number, + default: undefined + }, + cssMode: { + type: Boolean, + default: undefined + }, + updateOnWindowResize: { + type: Boolean, + default: undefined + }, + resizeObserver: { + type: Boolean, + default: undefined + }, + nested: { + type: Boolean, + default: undefined + }, + focusableElements: { + type: String, + default: undefined + }, + width: { + type: Number, + default: undefined + }, + height: { + type: Number, + default: undefined + }, + preventInteractionOnTransition: { + type: Boolean, + default: undefined + }, + userAgent: { + type: String, + default: undefined + }, + url: { + type: String, + default: undefined + }, + edgeSwipeDetection: { + type: [Boolean, String], + default: undefined + }, + edgeSwipeThreshold: { + type: Number, + default: undefined + }, + autoHeight: { + type: Boolean, + default: undefined + }, + setWrapperSize: { + type: Boolean, + default: undefined + }, + virtualTranslate: { + type: Boolean, + default: undefined + }, + effect: { + type: String, + default: undefined + }, + breakpoints: { + type: Object, + default: undefined + }, + breakpointsBase: { + type: String, + default: undefined + }, + spaceBetween: { + type: [Number, String], + default: undefined + }, + slidesPerView: { + type: [Number, String], + default: undefined + }, + maxBackfaceHiddenSlides: { + type: Number, + default: undefined + }, + slidesPerGroup: { + type: Number, + default: undefined + }, + slidesPerGroupSkip: { + type: Number, + default: undefined + }, + slidesPerGroupAuto: { + type: Boolean, + default: undefined + }, + centeredSlides: { + type: Boolean, + default: undefined + }, + centeredSlidesBounds: { + type: Boolean, + default: undefined + }, + slidesOffsetBefore: { + type: Number, + default: undefined + }, + slidesOffsetAfter: { + type: Number, + default: undefined + }, + normalizeSlideIndex: { + type: Boolean, + default: undefined + }, + centerInsufficientSlides: { + type: Boolean, + default: undefined + }, + watchOverflow: { + type: Boolean, + default: undefined + }, + roundLengths: { + type: Boolean, + default: undefined + }, + touchRatio: { + type: Number, + default: undefined + }, + touchAngle: { + type: Number, + default: undefined + }, + simulateTouch: { + type: Boolean, + default: undefined + }, + shortSwipes: { + type: Boolean, + default: undefined + }, + longSwipes: { + type: Boolean, + default: undefined + }, + longSwipesRatio: { + type: Number, + default: undefined + }, + longSwipesMs: { + type: Number, + default: undefined + }, + followFinger: { + type: Boolean, + default: undefined + }, + allowTouchMove: { + type: Boolean, + default: undefined + }, + threshold: { + type: Number, + default: undefined + }, + touchMoveStopPropagation: { + type: Boolean, + default: undefined + }, + touchStartPreventDefault: { + type: Boolean, + default: undefined + }, + touchStartForcePreventDefault: { + type: Boolean, + default: undefined + }, + touchReleaseOnEdges: { + type: Boolean, + default: undefined + }, + uniqueNavElements: { + type: Boolean, + default: undefined + }, + resistance: { + type: Boolean, + default: undefined + }, + resistanceRatio: { + type: Number, + default: undefined + }, + watchSlidesProgress: { + type: Boolean, + default: undefined + }, + grabCursor: { + type: Boolean, + default: undefined + }, + preventClicks: { + type: Boolean, + default: undefined + }, + preventClicksPropagation: { + type: Boolean, + default: undefined + }, + slideToClickedSlide: { + type: Boolean, + default: undefined + }, + loop: { + type: Boolean, + default: undefined + }, + loopedSlides: { + type: Number, + default: undefined + }, + loopPreventsSliding: { + type: Boolean, + default: undefined + }, + rewind: { + type: Boolean, + default: undefined + }, + allowSlidePrev: { + type: Boolean, + default: undefined + }, + allowSlideNext: { + type: Boolean, + default: undefined + }, + swipeHandler: { + type: Boolean, + default: undefined + }, + noSwiping: { + type: Boolean, + default: undefined + }, + noSwipingClass: { + type: String, + default: undefined + }, + noSwipingSelector: { + type: String, + default: undefined + }, + passiveListeners: { + type: Boolean, + default: undefined + }, + containerModifierClass: { + type: String, + default: undefined + }, + slideClass: { + type: String, + default: undefined + }, + slideActiveClass: { + type: String, + default: undefined + }, + slideVisibleClass: { + type: String, + default: undefined + }, + slideFullyVisibleClass: { + type: String, + default: undefined + }, + slideBlankClass: { + type: String, + default: undefined + }, + slideNextClass: { + type: String, + default: undefined + }, + slidePrevClass: { + type: String, + default: undefined + }, + wrapperClass: { + type: String, + default: undefined + }, + lazyPreloaderClass: { + type: String, + default: undefined + }, + lazyPreloadPrevNext: { + type: Number, + default: undefined + }, + runCallbacksOnInit: { + type: Boolean, + default: undefined + }, + observer: { + type: Boolean, + default: undefined + }, + observeParents: { + type: Boolean, + default: undefined + }, + observeSlideChildren: { + type: Boolean, + default: undefined + }, + a11y: { + type: [Boolean, Object], + default: undefined + }, + autoplay: { + type: [Boolean, Object], + default: undefined + }, + controller: { + type: Object, + default: undefined + }, + coverflowEffect: { + type: Object, + default: undefined + }, + cubeEffect: { + type: Object, + default: undefined + }, + fadeEffect: { + type: Object, + default: undefined + }, + flipEffect: { + type: Object, + default: undefined + }, + creativeEffect: { + type: Object, + default: undefined + }, + cardsEffect: { + type: Object, + default: undefined + }, + hashNavigation: { + type: [Boolean, Object], + default: undefined + }, + history: { + type: [Boolean, Object], + default: undefined + }, + keyboard: { + type: [Boolean, Object], + default: undefined + }, + mousewheel: { + type: [Boolean, Object], + default: undefined + }, + navigation: { + type: [Boolean, Object], + default: undefined + }, + pagination: { + type: [Boolean, Object], + default: undefined + }, + parallax: { + type: [Boolean, Object], + default: undefined + }, + scrollbar: { + type: [Boolean, Object], + default: undefined + }, + thumbs: { + type: Object, + default: undefined + }, + virtual: { + type: [Boolean, Object], + default: undefined + }, + zoom: { + type: [Boolean, Object], + default: undefined + }, + grid: { + type: [Object], + default: undefined + }, + freeMode: { + type: [Boolean, Object], + default: undefined + }, + enabled: { + type: Boolean, + default: undefined + } + }, + emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_slideClasses', '_swiper', '_freeModeNoMomentumRelease', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'autoplayPause', 'autoplayResume', 'autoplayTimeLeft', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'changeDirection', 'click', 'disable', 'doubleTap', 'doubleClick', 'destroy', 'enable', 'fromEdge', 'hashChange', 'hashSet', 'init', 'keyPress', 'lock', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'navigationPrev', 'navigationNext', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', 'slidesUpdated', 'slideChange', 'slideChangeTransitionEnd', 'slideChangeTransitionStart', 'slideNextTransitionEnd', 'slideNextTransitionStart', 'slidePrevTransitionEnd', 'slidePrevTransitionStart', 'slideResetTransitionStart', 'slideResetTransitionEnd', 'sliderMove', 'sliderFirstMove', 'slidesLengthChange', 'slidesGridLengthChange', 'snapGridLengthChange', 'snapIndexChange', 'swiper', 'tap', 'toEdge', 'touchEnd', 'touchMove', 'touchMoveOpposite', 'touchStart', 'transitionEnd', 'transitionStart', 'unlock', 'update', 'virtualUpdate', 'zoomChange'], + setup(props, _ref) { + let { + slots: originalSlots, + emit + } = _ref; + const { + tag: Tag, + wrapperTag: WrapperTag + } = props; + const containerClasses = ref('swiper'); + const virtualData = ref(null); + const breakpointChanged = ref(false); + const initializedRef = ref(false); + const swiperElRef = ref(null); + const swiperRef = ref(null); + const oldPassedParamsRef = ref(null); + const slidesRef = { + value: [] + }; + const oldSlidesRef = { + value: [] + }; + const nextElRef = ref(null); + const prevElRef = ref(null); + const paginationElRef = ref(null); + const scrollbarElRef = ref(null); + const { + params: swiperParams, + passedParams + } = getParams(props, false); + getChildren(originalSlots, slidesRef, oldSlidesRef); + oldPassedParamsRef.value = passedParams; + oldSlidesRef.value = slidesRef.value; + const onBeforeBreakpoint = () => { + getChildren(originalSlots, slidesRef, oldSlidesRef); + breakpointChanged.value = true; + }; + swiperParams.onAny = function (event) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + emit(event, ...args); + }; + Object.assign(swiperParams.on, { + _beforeBreakpoint: onBeforeBreakpoint, + _containerClasses(swiper, classes) { + containerClasses.value = classes; + } + }); + + // init Swiper + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.value = new Swiper$1(passParams); + if (swiperRef.value.virtual && swiperRef.value.params.virtual.enabled) { + swiperRef.value.virtual.slides = slidesRef.value; + const extendWith = { + cache: false, + slides: slidesRef.value, + renderExternal: data => { + virtualData.value = data; + }, + renderExternalUpdate: false + }; + extend(swiperRef.value.params.virtual, extendWith); + extend(swiperRef.value.originalParams.virtual, extendWith); + } + onUpdated(() => { + // set initialized flag + if (!initializedRef.value && swiperRef.value) { + swiperRef.value.emitSlidesClasses(); + initializedRef.value = true; + } + // watch for params change + const { + passedParams: newPassedParams + } = getParams(props, false); + const changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value, c => c.props && c.props.key); + oldPassedParamsRef.value = newPassedParams; + if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) { + updateSwiper({ + swiper: swiperRef.value, + slides: slidesRef.value, + passedParams: newPassedParams, + changedParams, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + scrollbarEl: scrollbarElRef.value, + paginationEl: paginationElRef.value + }); + } + breakpointChanged.value = false; + }); + provide('swiper', swiperRef); + + // update on virtual update + watch(virtualData, () => { + nextTick(() => { + updateOnVirtualData(swiperRef.value); + }); + }); + + // mount swiper + onMounted(() => { + if (!swiperElRef.value) return; + mountSwiper({ + el: swiperElRef.value, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + paginationEl: paginationElRef.value, + scrollbarEl: scrollbarElRef.value, + swiper: swiperRef.value + }, swiperParams); + emit('swiper', swiperRef.value); + }); + onBeforeUnmount(() => { + if (swiperRef.value && !swiperRef.value.destroyed) { + swiperRef.value.destroy(true, false); + } + }); + + // bypass swiper instance to slides + function renderSlides(slides) { + if (swiperParams.virtual) { + return renderVirtual(swiperRef, slides, virtualData.value); + } + slides.forEach((slide, index) => { + if (!slide.props) slide.props = {}; + slide.props.swiperRef = swiperRef; + slide.props.swiperSlideIndex = index; + }); + return slides; + } + return () => { + const { + slides, + slots + } = getChildren(originalSlots, slidesRef, oldSlidesRef); + return h(Tag, { + ref: swiperElRef, + class: uniqueClasses(containerClasses.value) + }, [slots['container-start'], h(WrapperTag, { + class: wrapperClass(swiperParams.wrapperClass) + }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), needsNavigation(props) && [h('div', { + ref: prevElRef, + class: 'swiper-button-prev' + }), h('div', { + ref: nextElRef, + class: 'swiper-button-next' + })], needsScrollbar(props) && h('div', { + ref: scrollbarElRef, + class: 'swiper-scrollbar' + }), needsPagination(props) && h('div', { + ref: paginationElRef, + class: 'swiper-pagination' + }), slots['container-end']]); + }; + } +}; + +const SwiperSlide = { + name: 'SwiperSlide', + props: { + tag: { + type: String, + default: 'div' + }, + swiperRef: { + type: Object, + required: false + }, + swiperSlideIndex: { + type: Number, + default: undefined, + required: false + }, + zoom: { + type: Boolean, + default: undefined, + required: false + }, + lazy: { + type: Boolean, + default: false, + required: false + }, + virtualIndex: { + type: [String, Number], + default: undefined + } + }, + setup(props, _ref) { + let { + slots + } = _ref; + let eventAttached = false; + const { + swiperRef + } = props; + const slideElRef = ref(null); + const slideClasses = ref('swiper-slide'); + const lazyLoaded = ref(false); + function updateClasses(swiper, el, classNames) { + if (el === slideElRef.value) { + slideClasses.value = classNames; + } + } + onMounted(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onBeforeUpdate(() => { + if (eventAttached || !swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onUpdated(() => { + if (!slideElRef.value || !swiperRef || !swiperRef.value) return; + if (typeof props.swiperSlideIndex !== 'undefined') { + slideElRef.value.swiperSlideIndex = props.swiperSlideIndex; + } + if (swiperRef.value.destroyed) { + if (slideClasses.value !== 'swiper-slide') { + slideClasses.value = 'swiper-slide'; + } + } + }); + onBeforeUnmount(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.off('_slideClass', updateClasses); + }); + const slideData = computed(() => ({ + isActive: slideClasses.value.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.value.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.value.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.value.indexOf('swiper-slide-next') >= 0 + })); + provide('swiperSlide', slideData); + const onLoad = () => { + lazyLoaded.value = true; + }; + return () => { + return h(props.tag, { + class: uniqueClasses(`${slideClasses.value}`), + ref: slideElRef, + 'data-swiper-slide-index': typeof props.virtualIndex === 'undefined' && swiperRef && swiperRef.value && swiperRef.value.params.loop ? props.swiperSlideIndex : props.virtualIndex, + onLoadCapture: onLoad + }, props.zoom ? h('div', { + class: 'swiper-zoom-container', + 'data-swiper-zoom': typeof props.zoom === 'number' ? props.zoom : undefined + }, [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader' + })]) : [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader' + })]); + }; + } +}; + +const useSwiperSlide = () => { + return inject('swiperSlide'); +}; +const useSwiper = () => { + return inject('swiper'); +}; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/source/vendor/swiper-bundle/swiper.css b/source/vendor/swiper-bundle/swiper.css new file mode 100644 index 0000000..350282c --- /dev/null +++ b/source/vendor/swiper-bundle/swiper.css @@ -0,0 +1,228 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; +} +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ diff --git a/source/vendor/swiper-bundle/swiper.d.ts b/source/vendor/swiper-bundle/swiper.d.ts new file mode 100644 index 0000000..07e4e50 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper.d.ts @@ -0,0 +1,5 @@ +// @ts-ignore +import Swiper from './types/swiper-class.d.ts'; + +export default Swiper; +export { Swiper }; diff --git a/source/vendor/swiper-bundle/swiper.js b/source/vendor/swiper-bundle/swiper.js new file mode 100644 index 0000000..4d720b5 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper.js @@ -0,0 +1,4339 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + return Swiper; + +})(); diff --git a/source/vendor/swiper-bundle/swiper.less b/source/vendor/swiper-bundle/swiper.less new file mode 100644 index 0000000..8d5c5d3 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper.less @@ -0,0 +1,251 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +@themeColor: #007aff; + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ + +:root { + --swiper-theme-color: @themeColor; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + + + diff --git a/source/vendor/swiper-bundle/swiper.min.css b/source/vendor/swiper-bundle/swiper.min.css new file mode 100644 index 0000000..981741c --- /dev/null +++ b/source/vendor/swiper-bundle/swiper.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper.min.js b/source/vendor/swiper-bundle/swiper.min.js new file mode 100644 index 0000000..840f4db --- /dev/null +++ b/source/vendor/swiper-bundle/swiper.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function f(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function h(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let S,T,b;function y(){return S||(S=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),S}function x(e){return void 0===e&&(e={}),T||(T=function(e){let{userAgent:t}=void 0===e?{}:e;const s=y(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),f=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!h&&(o.os="android",o.android=!0),(p||f||u)&&(o.os="ios",o.ios=!0),o}(e)),T}function E(){return b||(b=function(){const e=n(),t=x();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=i();return{isSafari:s||a,needPerspectiveFix:s,need3dFix:a||r&&t.ios,isWebView:r}}()),b}var M={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const C=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const P=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const I=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},L=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},k=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&L(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&L(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?x=parseFloat(x.replace("%",""))/100*n:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let I;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&h.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-n;h=h.map((e=>e<=0?-S:e>t?t+T:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{h[t]=e-s})),m.forEach(((e,t)=>{m[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:h,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-h[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),h.length!==b&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==y&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],m=u>=0&&u1&&f<=t.size||u<=0&&f>=t.size;m&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e)),C(l,m,s.slideVisibleClass),C(l,h,s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>f(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(a||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{P(e,e===l,s.slideActiveClass),P(e,e===c,s.slideNextClass),P(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&k(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(f?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let S;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),S=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,S),0===t?n.transitionEnd(s,S):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,S))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let o=r.params.slidesPerView;"auto"===o?o=r.slidesPerViewDynamic():(o=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&o%2==0&&(o+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),f=n.map((e=>p(e)));let h=n[f.indexOf(u)-1];if(void 0===h&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;if(void 0!==h&&(m=a.indexOf(h),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(f(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(f(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var D={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{f(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(f.slideActiveClass)))[0]):y=n;const x="next"===i||!i,E="prev"===i||!i;let M=0,C=0;const P=S?Math.ceil(d.length/f.grid.rows):d.length,I=(S?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(I=0;t-=1)d[t].column===e&&T.push(t)}else T.push(P-t-1)}}else if(I+v>P-w){C=Math.max(I-(P-2*w),g);for(let e=0;e{e.column===t&&b.push(s)})):b.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&b.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===f.slidesPerView?l.updateSlides():S&&(T.length>0&&E||b.length>0&&x)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),f.watchSlidesProgress&&l.updateSlidesOffset(),s)if(T.length>0&&E){if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y+M]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y+Math.ceil(M),0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=S?T.length/f.grid.rows:T.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(b.length>0&&x)if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y-C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y-C,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=S?b.length/f.grid.rows:b.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===f.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===f.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function _(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function V(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void _(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...element.assignedElements()].includes(e);return s}(p,t.wrapperEl))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,f=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&f&&(p=f[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!_(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const S=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!S||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function N(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,f=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=f);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:f,currentX:u,currentY:f}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(fa.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=f;const h=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(h**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(h))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling||"touchmove"===p.type&&r.preventTouchMoveFromPointerMove)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?h:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const S=s.params.loop&&!n.cssMode,T="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(S&&T&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&S&&T&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:f,currentX:u,currentY:f,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let b=!0,y=n.resistanceRatio;if(n.touchReleaseOnEdges&&(y=0),v>0?(S&&T&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(b=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**y))):v<0&&(S&&T&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function F(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),f=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),f<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const m=h>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&h=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,S=null;n.rewind&&(t.isBeginning?S=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const T=(h-c[v])/g,b=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(T>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+b):t.slideTo(v)),"prev"===t.swipeDirection&&(T>1-n.longSwipesRatio?t.slideTo(v+b):null!==S&&T<0&&Math.abs(T)>n.longSwipesRatio?t.slideTo(S):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+b):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+b),"prev"===t.swipeDirection&&t.slideTo(null!==S?S:v))}}function B(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function $(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function H(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function R(e){const t=this;I(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function j(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const W=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;n&&"string"!=typeof n&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",B,!0):e[c]("observerUpdate",B,!0),n[d]("load",e.onLoad,{capture:!0}))};const Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var q={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function X(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const U={eventsEmitter:M,update:O,translate:A,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),z({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),z({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:G,loop:D,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=V.bind(e),e.onTouchMove=N.bind(e),e.onTouchEnd=F.bind(e),e.onDocumentTouchStart=j.bind(e),t.cssMode&&(e.onScroll=H.bind(e)),e.onClick=$.bind(e),e.onLoad=R.bind(e),W(e,"on")},detachEvents:function(){W(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=Y(e,i),d=Y(e,o),p=e.params.grabCursor,u=o.grabCursor,f=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),p&&!u?e.unsetGrabCursor():!p&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const h=o.direction&&o.direction!==i.direction,m=i.loop&&(o.slidesPerView!==i.slidesPerView||h),v=i.loop;h&&s&&e.changeDirection(),c(e.params,o);const g=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),f&&!g?e.disable():!f&&g&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!v&&w?(e.loopCreate(t),e.updateSlides()):v&&!w&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},K={};class J{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new J(i))})),e}const o=this;o.__swiper__=!0,o.support=y(),o.device=x({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:X(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},q,l);return o.params=c({},d,K,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(f(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?Math.ceil(i[o].swiperSlideSize):0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&I(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return f(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),f(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?I(t,e):e.addEventListener("load",(e=>{I(t,e.target)}))})),k(t),t.initialized=!0,k(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),n&&n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(K,e)}static get extendedDefaults(){return K}static get defaults(){return q}static installModule(e){J.prototype.__modules__||(J.prototype.__modules__=[]);const t=J.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>J.installModule(e))),J):(J.installModule(e),J)}}return Object.keys(U).forEach((e=>{Object.keys(U[e]).forEach((t=>{J.prototype[t]=U[e][t]}))})),J.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]),J}(); +//# sourceMappingURL=swiper.min.js.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper.min.js.map b/source/vendor/swiper-bundle/swiper.min.js.map new file mode 100644 index 0000000..9926ed3 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","slideEl","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","parent","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parentElement","elementParents","disconnect"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper.min.mjs b/source/vendor/swiper-bundle/swiper.min.mjs new file mode 100644 index 0000000..ad5831e --- /dev/null +++ b/source/vendor/swiper-bundle/swiper.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +export{S as Swiper,S as default}from"./shared/swiper-core.min.mjs"; +//# sourceMappingURL=swiper.min.mjs.map \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper.min.mjs.map b/source/vendor/swiper-bundle/swiper.min.mjs.map new file mode 100644 index 0000000..6938270 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.mjs.mjs","names":["S"],"sources":["0"],"mappings":";;;;;;;;;;;;OAYSA,YAAaA,iBAAoB"} \ No newline at end of file diff --git a/source/vendor/swiper-bundle/swiper.mjs b/source/vendor/swiper-bundle/swiper.mjs new file mode 100644 index 0000000..25595d2 --- /dev/null +++ b/source/vendor/swiper-bundle/swiper.mjs @@ -0,0 +1,13 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +export { S as Swiper, S as default } from './shared/swiper-core.mjs'; diff --git a/source/vendor/swiper-bundle/swiper.scss b/source/vendor/swiper-bundle/swiper.scss new file mode 100644 index 0000000..cdef7dd --- /dev/null +++ b/source/vendor/swiper-bundle/swiper.scss @@ -0,0 +1,252 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +@import 'swiper-vars.scss'; +@at-root { + @font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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') + format('woff'); + font-weight: 400; + font-style: normal; + } +} +@at-root { + :root { + --swiper-theme-color: #{$themeColor}; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ + } +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + + + diff --git a/source/vendor/swiper-bundle/types/index.d.ts b/source/vendor/swiper-bundle/types/index.d.ts new file mode 100644 index 0000000..e6e0dc4 --- /dev/null +++ b/source/vendor/swiper-bundle/types/index.d.ts @@ -0,0 +1,6 @@ +// @ts-nocheck +export * from './shared.d.ts'; +export { default as Swiper } from './swiper-class.d.ts'; +export * from './swiper-events.d.ts'; +export * from './swiper-options.d.ts'; +export * from './modules/public-api.d.ts'; diff --git a/source/vendor/swiper-bundle/types/modules/a11y.d.ts b/source/vendor/swiper-bundle/types/modules/a11y.d.ts new file mode 100644 index 0000000..67cb64a --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/a11y.d.ts @@ -0,0 +1,103 @@ +export interface A11yMethods {} + +export interface A11yEvents {} + +export interface A11yOptions { + /** + * Enables A11y + * + * @default true + */ + enabled?: boolean; + + /** + * Message for screen readers for previous button + * + * @default 'Previous slide' + */ + prevSlideMessage?: string; + + /** + * Message for screen readers for next button + * + * @default 'Next slide' + */ + nextSlideMessage?: string; + + /** + * Message for screen readers for previous button when swiper is on first slide + * + * @default 'This is the first slide' + */ + firstSlideMessage?: string; + + /** + * Message for screen readers for next button when swiper is on last slide + * + * @default 'This is the last slide' + */ + lastSlideMessage?: string; + + /** + * Message for screen readers for single pagination bullet + * + * @default 'Go to slide {{index}}' + */ + paginationBulletMessage?: string; + + /** + * CSS class name of A11y notification + * + * @default 'swiper-notification' + */ + notificationClass?: string; + + /** + * Message for screen readers for outer swiper container + * + * @default null + */ + containerMessage?: string | null; + + /** + * Message for screen readers describing the role of outer swiper container + * + * @default null + */ + containerRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the role of slide element + * + * @default null + */ + itemRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the label of slide element + * + * @default '{{index}} / {{slidesLength}}' + */ + slideLabelMessage?: string; + + /** + * Value of swiper slide `role` attribute + * + * @default 'group' + */ + slideRole?: string; + + /** + * Value of `id` attribute to be set on swiper-wrapper. If `null` will be generated automatically + * + * @default null + */ + id?: string | number | null; + + /** + * Enables scrolling to the slide that has been focused + * + * @default true + */ + scrollOnFocus?: boolean; +} diff --git a/source/vendor/swiper-bundle/types/modules/autoplay.d.ts b/source/vendor/swiper-bundle/types/modules/autoplay.d.ts new file mode 100644 index 0000000..4c87488 --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/autoplay.d.ts @@ -0,0 +1,133 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface AutoplayMethods { + /** + * Whether autoplay enabled and running + */ + running: boolean; + + /** + * Whether autoplay is paused + */ + paused: boolean; + + /** + * If autoplay is paused, it contains time left (in ms) before transition to next slide + */ + timeLeft: number; + + /** + * Pause autoplay + */ + pause(): void; + + /** + * Resume autoplay + */ + resume(): void; + + /** + * Start autoplay + */ + start(): boolean; + + /** + * Stop autoplay + */ + stop(): boolean; +} + +export interface AutoplayEvents { + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: Swiper) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: Swiper) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: Swiper, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: Swiper) => void; +} + +/** + * Object with autoplay parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + * }); + * ``` + */ +export interface AutoplayOptions { + /** + * Delay between transitions (in ms). If this parameter is not specified, auto play will be disabled + * + * If you need to specify different delay for specific slides you can do it by using + * `data-swiper-autoplay` (in ms) attribute on slide. + * + * @example + * ```html + * + *
+ * ``` + * + * @default 3000 + */ + delay?: number; + + /** + * Enable this parameter and autoplay will be stopped when it reaches last slide (has no effect in loop mode) + * + * @default false + */ + stopOnLastSlide?: boolean; + + /** + * Set to `false` and autoplay will not be disabled after user interactions (swipes), + * it will be restarted every time after interaction + * + * @default true + */ + disableOnInteraction?: boolean; + + /** + * Enables autoplay in reverse direction + * + * @default false + */ + reverseDirection?: boolean; + + /** + * When enabled autoplay will wait for wrapper transition to continue. + * Can be disabled in case of using Virtual Translate when your + * slider may not have transition + * + * @default true + */ + waitForTransition?: boolean; + + /** + * When enabled autoplay will be paused on pointer (mouse) enter over Swiper container. + * + * @default false + */ + pauseOnMouseEnter?: boolean; +} diff --git a/source/vendor/swiper-bundle/types/modules/controller.d.ts b/source/vendor/swiper-bundle/types/modules/controller.d.ts new file mode 100644 index 0000000..cf61aef --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/controller.d.ts @@ -0,0 +1,35 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ControllerMethods { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper + */ + control?: Swiper | Swiper[]; +} + +export interface ControllerEvents {} + +export interface ControllerOptions { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper. Also accepts string with CSS selector of Swiper element, or HTMLElement of Swiper element + */ + control?: Swiper | Swiper[] | string | HTMLElement | null; + + /** + * Set to `true` and controlling will be in inverse direction + * + * @default false + */ + inverse?: boolean; + + /** + * Defines a way how to control another slider: slide by slide + * (with respect to other slider's grid) or depending on all slides/container + * (depending on total slider percentage). + * + * @default 'slide' + */ + by?: 'slide' | 'container'; +} diff --git a/source/vendor/swiper-bundle/types/modules/effect-cards.d.ts b/source/vendor/swiper-bundle/types/modules/effect-cards.d.ts new file mode 100644 index 0000000..9f688a4 --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/effect-cards.d.ts @@ -0,0 +1,33 @@ +export interface CardsEffectMethods {} + +export interface CardsEffectEvents {} + +export interface CardsEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + + /** + * Enables cards rotation + * + * @default true + */ + rotate?: boolean; + + /** + * Rotate angle per slide (in degrees) + * + * @default 2 + */ + perSlideRotate?: number; + + /** + * Offset distance per slide (in px) + * + * @default 8 + */ + perSlideOffset?: number; +} diff --git a/source/vendor/swiper-bundle/types/modules/effect-coverflow.d.ts b/source/vendor/swiper-bundle/types/modules/effect-coverflow.d.ts new file mode 100644 index 0000000..847201f --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/effect-coverflow.d.ts @@ -0,0 +1,42 @@ +export interface CoverflowEffectMethods {} + +export interface CoverflowEffectEvents {} + +export interface CoverflowEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Slide rotate in degrees + * + * @default 50 + */ + rotate?: number; + /** + * Stretch space between slides (in px) + * + * @default 0 + */ + stretch?: number; + /** + * Depth offset in px (slides translate in Z axis) + * + * @default 100 + */ + depth?: number; + /** + * Slide scale effect + * + * @default 1 + */ + scale?: number; + /** + * Effect multiplier + * + * @default 1 + */ + modifier?: number; +} diff --git a/source/vendor/swiper-bundle/types/modules/effect-creative.d.ts b/source/vendor/swiper-bundle/types/modules/effect-creative.d.ts new file mode 100644 index 0000000..eba8987 --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/effect-creative.d.ts @@ -0,0 +1,86 @@ +interface CreativeEffectTransform { + translate?: (string | number)[]; + rotate?: number[]; + opacity?: number; + scale?: number; + shadow?: boolean; + origin?: string; +} + +export interface CreativeEffectMethods {} + +export interface CreativeEffectEvents {} + +export interface CreativeEffectOptions { + /** + * Previous slide transformations. Accepts object of the following type: + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + prev?: CreativeEffectTransform; + /** + * Next slide transformations. + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + next?: CreativeEffectTransform; + + /** + * Limit progress/offset to amount of side slides. If `1`, then slides all slides after prev/next will have same state. If `2`, then all slides after 2nd before/after active will have same state, etc. + * + * @default 1 + */ + limitProgress?: number; + /** + * Splits shadow "opacity" per slide based on `limitProgress` (only if transformation shadows enabled). E.g. setting `limitProgress: 2` and enabling `shadowPerProgress`, will set shadow opacity to `0.5` and `1` on two slides next to active. With this parameter disabled, all slides beside active will have shadow with `1` opacity + * + * @default false + */ + shadowPerProgress?: boolean; + /** + * Allows to multiply slides transformations and opacity. + * + * @default 1 + */ + progressMultiplier?: number; + /** + * Enable this parameter if your custom transforms require 3D transformations (`translateZ`, `rotateX`, `rotateY` ) + * + * @default true + */ + perspective?: boolean; +} diff --git a/source/vendor/swiper-bundle/types/modules/effect-cube.d.ts b/source/vendor/swiper-bundle/types/modules/effect-cube.d.ts new file mode 100644 index 0000000..c59535c --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/effect-cube.d.ts @@ -0,0 +1,30 @@ +export interface CubeEffectMethods {} + +export interface CubeEffectEvents {} + +export interface CubeEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Enables main slider shadow + * + * @default true + */ + shadow?: boolean; + /** + * Main shadow offset in px + * + * @default 20 + */ + shadowOffset?: number; + /** + * Main shadow scale ratio + * + * @default 0.94 + */ + shadowScale?: number; +} diff --git a/source/vendor/swiper-bundle/types/modules/effect-fade.d.ts b/source/vendor/swiper-bundle/types/modules/effect-fade.d.ts new file mode 100644 index 0000000..1d3123c --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/effect-fade.d.ts @@ -0,0 +1,12 @@ +export interface FadeEffectMethods {} + +export interface FadeEffectEvents {} + +export interface FadeEffectOptions { + /** + * Enables slides cross fade + * + * @default false + */ + crossFade?: boolean; +} diff --git a/source/vendor/swiper-bundle/types/modules/effect-flip.d.ts b/source/vendor/swiper-bundle/types/modules/effect-flip.d.ts new file mode 100644 index 0000000..aa672c3 --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/effect-flip.d.ts @@ -0,0 +1,18 @@ +export interface FlipEffectMethods {} + +export interface FlipEffectEvents {} + +export interface FlipEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Limit edge slides rotation + * + * @default true + */ + limitRotation?: boolean; +} diff --git a/source/vendor/swiper-bundle/types/modules/free-mode.d.ts b/source/vendor/swiper-bundle/types/modules/free-mode.d.ts new file mode 100644 index 0000000..9488642 --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/free-mode.d.ts @@ -0,0 +1,64 @@ +export interface FreeModeMethods { + onTouchMove(): void; + onTouchEnd(): void; +} + +export interface FreeModeEvents {} + +export interface FreeModeOptions { + /** + * Whether the free mode is enabled + * + * @default false + */ + enabled?: boolean; + + /** + * If enabled, then slide will keep moving for a while after you release it + * + * @default true + */ + momentum?: boolean; + + /** + * Higher value produces larger momentum distance after you release slider + * + * @default 1 + */ + momentumRatio?: number; + + /** + * Higher value produces larger momentum velocity after you release slider + * + * @default 1 + */ + momentumVelocityRatio?: number; + + /** + * Set to `false` if you want to disable momentum bounce in free mode + * + * @default true + */ + momentumBounce?: boolean; + + /** + * Higher value produces larger momentum bounce effect + * + * @default 1 + */ + momentumBounceRatio?: number; + + /** + * Minimum touchmove-velocity required to trigger free mode momentum + * + * @default 0.02 + */ + minimumVelocity?: number; + + /** + * Set to enabled to enable snap to slides positions in free mode + * + * @default false + */ + sticky?: boolean; +} diff --git a/source/vendor/swiper-bundle/types/modules/grid.d.ts b/source/vendor/swiper-bundle/types/modules/grid.d.ts new file mode 100644 index 0000000..070b14a --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/grid.d.ts @@ -0,0 +1,21 @@ +export interface GridMethods {} + +export interface GridEvents {} + +export interface GridOptions { + /** + * Number of slides rows, for multirow layout + * + * @default 1 + */ + rows?: number; + + /** + * Can be `'column'` or `'row'`. Defines how slides should fill rows, by column or by row + * + * @note if used with loop mode make sure number of slides is even specified in loop mode requirements, or enable `loopAddBlankSlides` parameter + * + * @default 'column' + */ + fill?: 'row' | 'column'; +} diff --git a/source/vendor/swiper-bundle/types/modules/hash-navigation.d.ts b/source/vendor/swiper-bundle/types/modules/hash-navigation.d.ts new file mode 100644 index 0000000..8b6edfe --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/hash-navigation.d.ts @@ -0,0 +1,38 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface HashNavigationMethods {} + +export interface HashNavigationEvents { + /** + * Event will be fired on window hash change + */ + hashChange: (swiper: Swiper) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: Swiper) => void; +} + +export interface HashNavigationOptions { + /** + * Set to `true` to enable also navigation through slides (when hashnav + * is enabled) by browser history or by setting directly hash on document location + * + * @default false + */ + watchState?: boolean; + + /** + * Works in addition to hashnav to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Designed to be used with Virtual slides when it is impossible to find slide in DOM by hash (e.g. not yet rendered) + * + */ + getSlideIndex?: (swiper: Swiper, hash: string) => number; +} diff --git a/source/vendor/swiper-bundle/types/modules/history.d.ts b/source/vendor/swiper-bundle/types/modules/history.d.ts new file mode 100644 index 0000000..a3cea81 --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/history.d.ts @@ -0,0 +1,43 @@ +export interface HistoryMethods {} + +export interface HistoryEvents {} + +export interface HistoryOptions { + /** + * Enables History Plugin. + * + * @default false + */ + enabled?: boolean; + + /** + * Swiper page root, useful to specify when you use Swiper history mode not on root website page. + * For example can be `https://my-website.com/` or `https://my-website.com/subpage/` or `/subpage/` + * + * + * @default '' + */ + root?: string; + + /** + * Works in addition to hashnav or history to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Url key for slides + * + * @default 'slides' + */ + key?: string; + + /** + * Keep query parameters when changing browser url. + * + * @default false + */ + keepQuery?: boolean; +} diff --git a/source/vendor/swiper-bundle/types/modules/index.d.ts b/source/vendor/swiper-bundle/types/modules/index.d.ts new file mode 100644 index 0000000..d0a1b9b --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/index.d.ts @@ -0,0 +1,53 @@ +import type { SwiperModule } from '../shared.d.ts'; + +declare const A11y: SwiperModule; +declare const Autoplay: SwiperModule; +declare const Controller: SwiperModule; +declare const EffectCoverflow: SwiperModule; +declare const EffectCube: SwiperModule; +declare const EffectFade: SwiperModule; +declare const EffectFlip: SwiperModule; +declare const EffectCreative: SwiperModule; +declare const EffectCards: SwiperModule; +declare const HashNavigation: SwiperModule; +declare const History: SwiperModule; +declare const Keyboard: SwiperModule; +declare const Lazy: SwiperModule; +declare const Mousewheel: SwiperModule; +declare const Navigation: SwiperModule; +declare const Pagination: SwiperModule; +declare const Parallax: SwiperModule; +declare const Scrollbar: SwiperModule; +declare const Thumbs: SwiperModule; +declare const Virtual: SwiperModule; +declare const Zoom: SwiperModule; +declare const FreeMode: SwiperModule; +declare const Grid: SwiperModule; +declare const Manipulation: SwiperModule; + +export { + A11y, + Autoplay, + Controller, + EffectCoverflow, + EffectCube, + EffectFade, + EffectFlip, + EffectCreative, + EffectCards, + HashNavigation, + History, + Keyboard, + Lazy, + Mousewheel, + Navigation, + Pagination, + Parallax, + Scrollbar, + Thumbs, + Virtual, + Zoom, + FreeMode, + Grid, + Manipulation, +}; diff --git a/source/vendor/swiper-bundle/types/modules/keyboard.d.ts b/source/vendor/swiper-bundle/types/modules/keyboard.d.ts new file mode 100644 index 0000000..d38dd8d --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/keyboard.d.ts @@ -0,0 +1,46 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface KeyboardMethods { + /** + * Whether the keyboard control is enabled + */ + enabled: boolean; + + /** + * Enable keyboard control + */ + enable(): void; + + /** + * Disable keyboard control + */ + disable(): void; +} + +export interface KeyboardEvents { + /** + * Event will be fired on key press + */ + keyPress: (swiper: Swiper, keyCode: string) => void; +} + +export interface KeyboardOptions { + /** + * Set to `true` to enable keyboard control + * + * @default false + */ + enabled?: boolean; + /** + * When enabled it will control sliders that are currently in viewport + * + * @default true + */ + onlyInViewport?: boolean; + /** + * When enabled it will enable keyboard navigation by Page Up and Page Down keys + * + * @default true + */ + pageUpDown?: boolean; +} diff --git a/source/vendor/swiper-bundle/types/modules/manipulation.d.ts b/source/vendor/swiper-bundle/types/modules/manipulation.d.ts new file mode 100644 index 0000000..3366eaf --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/manipulation.d.ts @@ -0,0 +1,70 @@ +export interface ManipulationMethods { + /** + * Add new slides to the end. slides could be + * HTMLElement or HTML string with new slide or + * array with such slides, for example: + * + * @example + * ```js + * appendSlide('
Slide 10"
') + * + * appendSlide([ + * '
Slide 10"
', + * '
Slide 11"
' + * ]); + * ``` + */ + appendSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the beginning. slides could be + * HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * prependSlide('
Slide 0"
') + * + * prependSlide([ + * '
Slide 1"
', + * '
Slide 2"
' + * ]); + * ``` + */ + prependSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the required index. slides could be HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * addSlide(1, '
Slide 10"
') + * + * addSlide(1, [ + * '
Slide 10"
', + * '
Slide 11"
' + * ]); + * ``` + */ + addSlide(index: number, slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Remove selected slides. slideIndex could be a number with slide index to remove or array with indexes. + * + * @example + * ```js + * removeSlide(0); // remove first slide + * removeSlide([0, 1]); // remove first and second slides + * removeAllSlides(); // Remove all slides + * ``` + */ + removeSlide(slideIndex: number | number[]): void; + + /** + * Remove all slides + */ + removeAllSlides(): void; +} + +export interface ManipulationEvents {} + +export interface ManipulationOptions {} diff --git a/source/vendor/swiper-bundle/types/modules/mousewheel.d.ts b/source/vendor/swiper-bundle/types/modules/mousewheel.d.ts new file mode 100644 index 0000000..4f2bb8f --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/mousewheel.d.ts @@ -0,0 +1,86 @@ +import type Swiper from '../swiper-class.d.ts'; +import type { CSSSelector } from '../shared.d.ts'; + +export interface MousewheelMethods { + /** + * Whether the mousewheel control is enabled + */ + enabled: boolean; + + /** + * Enable mousewheel control + */ + enable(): void; + + /** + * Disable mousewheel control + */ + disable(): void; +} + +export interface MousewheelEvents { + /** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: Swiper, event: WheelEvent) => void; +} + +export interface MousewheelOptions { + /** + * Set to `true` to enable mousewheel control + * + * @default false + */ + enabled?: boolean; + /** + * Set to `true` to force mousewheel swipes to axis. So in horizontal mode mousewheel will work only with horizontal mousewheel scrolling, and only with vertical scrolling in vertical mode. + * + * @default false + */ + forceToAxis?: boolean; + /** + * Set to `true` and swiper will release mousewheel event and allow page scrolling when swiper is on edge positions (in the beginning or in the end) + * + * @default false + */ + releaseOnEdges?: boolean; + /** + * Set to `true` to invert sliding direction + * + * @default false + */ + invert?: boolean; + /** + * Multiplier of mousewheel data, allows to tweak mouse wheel sensitivity + * + * @default 1 + */ + sensitivity?: number; + /** + * String with CSS selector or HTML element of the container accepting mousewheel events. By default it is swiper + * + * @default 'container' + */ + eventsTarget?: 'container' | 'wrapper' | CSSSelector | HTMLElement; + + /** + * Minimum mousewheel scroll delta to trigger swiper slide change + * + * @default null + */ + thresholdDelta?: number | null; + + /** + * Minimum mousewheel scroll time delta (in ms) to trigger swiper slide change + * + * @default null + */ + thresholdTime?: number | null; + + /** + * Scrolling on elements with this class will be ignored + * + * @default 'swiper-no-mousewheel' + */ + noMousewheelClass?: string; +} diff --git a/source/vendor/swiper-bundle/types/modules/navigation.d.ts b/source/vendor/swiper-bundle/types/modules/navigation.d.ts new file mode 100644 index 0000000..3d5c6e6 --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/navigation.d.ts @@ -0,0 +1,105 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface NavigationMethods { + /** + * HTMLElement of "next" navigation button + */ + nextEl: HTMLElement; + + /** + * HTMLElement of "previous" navigation button + */ + prevEl: HTMLElement; + + /** + * Update navigation buttons state (enabled/disabled) + */ + update(): void; + + /** + * Initialize navigation + */ + init(): void; + + /** + * Destroy navigation + */ + destroy(): void; +} + +export interface NavigationEvents { + /** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: Swiper) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: Swiper) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: Swiper) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: Swiper) => void; +} + +export interface NavigationOptions { + /** + * Boolean property to use with breakpoints to enable/disable navigation on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the element that will work + * like "next" button after click on it + * + * @default null + */ + nextEl?: CSSSelector | HTMLElement | null; + + /** + * String with CSS selector or HTML element of the element that will work + * like "prev" button after click on it + * + * @default null + */ + prevEl?: CSSSelector | HTMLElement | null; + + /** + * Toggle navigation buttons visibility after click on Slider's container + * + * @default false + */ + hideOnClick?: boolean; + + /** + * CSS class name added to navigation button when it becomes disabled + * + * @default 'swiper-button-disabled' + */ + disabledClass?: string; + + /** + * CSS class name added to navigation button when it becomes hidden + * + * @default 'swiper-button-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name added to navigation button when it is disabled + * + * @default 'swiper-button-lock' + */ + lockClass?: string; + + /** + * CSS class name added on swiper container when navigation is disabled by breakpoint + * + * @default 'swiper-navigation-disabled' + */ + navigationDisabledClass?: string; +} diff --git a/source/vendor/swiper-bundle/types/modules/pagination.d.ts b/source/vendor/swiper-bundle/types/modules/pagination.d.ts new file mode 100644 index 0000000..5af6341 --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/pagination.d.ts @@ -0,0 +1,295 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface PaginationMethods { + /** + * HTMLElement of pagination container element + */ + el: HTMLElement; + + /** + * Array of pagination bullets + * HTML elements. To get specific slide HTMLElement + * use `swiper.pagination.bullets[1]`. + */ + bullets: HTMLElement[]; + + /** + * Render pagination layout + */ + render(): void; + + /** + * Update pagination state (enabled/disabled/active) + */ + update(): void; + + /** + * Initialize pagination + */ + init(): void; + + /** + * Destroy pagination + */ + destroy(): void; +} + +export interface PaginationEvents { + /** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: Swiper) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: Swiper) => void; +} + +export interface PaginationOptions { + /** + * Boolean property to use with breakpoints to enable/disable pagination on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with pagination + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * String with type of pagination. Can be `'bullets'`, `'fraction'`, `'progressbar'` or `'custom'` + * + * @default 'bullets' + */ + type?: 'bullets' | 'fraction' | 'progressbar' | 'custom'; + + /** + * Defines which HTML tag will be used to represent single pagination bullet. Only for `'bullets'` pagination type. + * + * @default 'span' + */ + bulletElement?: string; + + /** + * Good to enable if you use bullets pagination with a lot of slides. So it will keep only few bullets visible at the same time. + * + * @default false + */ + dynamicBullets?: boolean; + + /** + * The number of main bullets visible when `dynamicBullets` enabled. + * + * @default 1 + */ + dynamicMainBullets?: number; + + /** + * Toggle (hide/show) pagination container visibility after click on Slider's container + * + * @default true + */ + hideOnClick?: boolean; + + /** + * If `true` then clicking on pagination button will cause transition to appropriate slide. Only for bullets pagination type + * + * @default false + */ + clickable?: boolean; + + /** + * Makes pagination progressbar opposite to Swiper's `direction` parameter, means vertical progressbar for horizontal swiper + * direction and horizontal progressbar for vertical swiper direction + * + * @default false + */ + progressbarOpposite?: boolean; + + /** + * format fraction pagination current number. Function receives current number, + * and you need to return formatted value + */ + formatFractionCurrent?: (number: number) => number | string; + + /** + * format fraction pagination total number. Function receives total number, and you + * need to return formatted value + */ + formatFractionTotal?: (number: number) => number | string; + + /** + * This parameter allows totally customize pagination bullets, you need to pass here a function that accepts `index` number of + * pagination bullet and required element class name (`className`). Only for `'bullets'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderBullet: function (index, className) { + * return '' + (index + 1) + ''; + * } + * }); + * ``` + */ + renderBullet?: (index: number, className: string) => string; + + /** + * This parameter allows to customize "fraction" pagination html. Only for `'fraction'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderFraction: function (currentClass, totalClass) { + * return '' + + * ' of ' + + * ''; + * } + * }); + * ``` + */ + renderFraction?: (currentClass: string, totalClass: string) => string; + + /** + * This parameter allows to customize "progress" pagination. Only for `'progress'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderProgressbar: function (progressbarFillClass) { + * return ''; + * } + * }); + * ``` + */ + renderProgressbar?: (progressbarFillClass: string) => string; + + /** + * This parameter is required for `'custom'` pagination type where you have to specify + * how it should be rendered. + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderCustom: function (swiper, current, total) { + * return current + ' of ' + total; + * } + * }); + * ``` + */ + renderCustom?: (swiper: Swiper, current: number, total: number) => string; + + /** + * CSS class name of single pagination bullet + * + * @default 'swiper-pagination-bullet' + */ + bulletClass?: string; + + /** + * CSS class name of currently active pagination bullet + * + * @default 'swiper-pagination-bullet-active' + */ + bulletActiveClass?: string; + + /** + * The beginning of the modifier CSS class name that will be added to pagination depending on parameters + * + * @default 'swiper-pagination-' + */ + modifierClass?: string; + + /** + * CSS class name of the element with currently active index in "fraction" pagination + * + * @default 'swiper-pagination-current' + */ + currentClass?: string; + + /** + * CSS class name of the element with total number of "snaps" in "fraction" pagination + * + * @default 'swiper-pagination-total' + */ + totalClass?: string; + + /** + * CSS class name of pagination when it becomes inactive + * + * @default 'swiper-pagination-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name of pagination progressbar fill element + * + * @default 'swiper-pagination-progressbar-fill' + */ + progressbarFillClass?: string; + + /** + * CSS class name of pagination progressbar opposite + * + * @default 'swiper-pagination-progressbar-opposite' + */ + progressbarOppositeClass?: string; + /** + * CSS class name set to pagination when it is clickable + * + * @default 'swiper-pagination-clickable' + */ + clickableClass?: string; + + /** + * CSS class name set to pagination when it is disabled + * + * @default 'swiper-pagination-lock' + */ + lockClass?: string; + + /** + * CSS class name set to pagination in horizontal Swiper + * + * @default 'swiper-pagination-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to pagination in vertical Swiper + * + * @default 'swiper-pagination-vertical' + */ + verticalClass?: string; + + /** + * CSS class name added on swiper container and pagination element when pagination is disabled by breakpoint + * + * @default 'swiper-pagination-disabled' + */ + paginationDisabledClass?: string; +} diff --git a/source/vendor/swiper-bundle/types/modules/parallax.d.ts b/source/vendor/swiper-bundle/types/modules/parallax.d.ts new file mode 100644 index 0000000..27e8e6f --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/parallax.d.ts @@ -0,0 +1,12 @@ +export interface ParallaxMethods {} + +export interface ParallaxEvents {} + +export interface ParallaxOptions { + /** + * Enable, if you want to use "parallaxed" elements inside of slider + * + * @default false + */ + enabled?: boolean; +} diff --git a/source/vendor/swiper-bundle/types/modules/public-api.d.ts b/source/vendor/swiper-bundle/types/modules/public-api.d.ts new file mode 100644 index 0000000..2553f46 --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/public-api.d.ts @@ -0,0 +1,23 @@ +export type * from './a11y.d.ts'; +export type * from './autoplay.d.ts'; +export type * from './controller.d.ts'; +export type * from './effect-coverflow.d.ts'; +export type * from './effect-cube.d.ts'; +export type * from './effect-fade.d.ts'; +export type * from './effect-flip.d.ts'; +export type * from './effect-creative.d.ts'; +export type * from './effect-cards.d.ts'; +export type * from './hash-navigation.d.ts'; +export type * from './history.d.ts'; +export type * from './keyboard.d.ts'; +export type * from './mousewheel.d.ts'; +export type * from './navigation.d.ts'; +export type * from './pagination.d.ts'; +export type * from './parallax.d.ts'; +export type * from './scrollbar.d.ts'; +export type * from './thumbs.d.ts'; +export type * from './virtual.d.ts'; +export type * from './zoom.d.ts'; +export type * from './free-mode.d.ts'; +export type * from './grid.d.ts'; +export type * from './manipulation.d.ts'; diff --git a/source/vendor/swiper-bundle/types/modules/scrollbar.d.ts b/source/vendor/swiper-bundle/types/modules/scrollbar.d.ts new file mode 100644 index 0000000..4e04d95 --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/scrollbar.d.ts @@ -0,0 +1,140 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface ScrollbarMethods { + /** + * HTMLElement of Scrollbar container element + */ + el: HTMLElement; + + /** + * HTMLElement of Scrollbar draggable handler element + */ + dragEl: HTMLElement; + + /** + * Updates scrollbar track and handler sizes + */ + updateSize(): void; + + /** + * Updates scrollbar translate + */ + setTranslate(): void; + + /** + * Initialize scrollbar + */ + init(): void; + + /** + * Destroy scrollbar + */ + destroy(): void; +} + +export interface ScrollbarEvents { + /** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; +} + +/** + * Object with scrollbar parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ +export interface ScrollbarOptions { + /** + * Boolean property to use with breakpoints to enable/disable scrollbar on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with scrollbar. + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * Hide scrollbar automatically after user interaction + * + * @default true + */ + hide?: boolean; + + /** + * Set to `true` to enable make scrollbar draggable that allows you to control slider position + * + * @default false + */ + draggable?: boolean; + + /** + * Set to `true` to snap slider position to slides when you release scrollbar + * + * @default false + */ + snapOnRelease?: boolean; + + /** + * Size of scrollbar draggable element in px + * + * @default 'auto' + */ + dragSize?: 'auto' | number; + + /** + * Scrollbar element additional CSS class when it is disabled + * + * @default 'swiper-scrollbar-lock' + */ + lockClass?: string; + + /** + * Scrollbar draggable element CSS class + * + * @default 'swiper-scrollbar-drag' + */ + dragClass?: string; + + /** + * CSS class name added on swiper container and scrollbar element when scrollbar is disabled by breakpoint + * + * @default 'swiper-scrollbar-disabled' + */ + scrollbarDisabledClass?: string; + + /** + * CSS class name set to scrollbar in horizontal Swiper + * + * @default 'swiper-scrollbar-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to scrollbar in vertical Swiper + * + * @default 'swiper-scrollbar-vertical' + */ + verticalClass?: string; +} diff --git a/source/vendor/swiper-bundle/types/modules/thumbs.d.ts b/source/vendor/swiper-bundle/types/modules/thumbs.d.ts new file mode 100644 index 0000000..51b2625 --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/thumbs.d.ts @@ -0,0 +1,54 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ThumbsMethods { + /** + * Swiper instance of thumbs swiper + */ + swiper: Swiper; + + /** + * Update thumbs + */ + update(initial: boolean): void; + + /** + * Initialize thumbs + */ + init(): boolean; +} + +export interface ThumbsEvents {} + +export interface ThumbsOptions { + /** + * Swiper instance of swiper used as thumbs or object with Swiper parameters to initialize thumbs swiper + * + * @default null + */ + swiper?: Swiper | string | null; + /** + * Additional class that will be added to activated thumbs swiper slide + * + * @default 'swiper-slide-thumb-active' + */ + slideThumbActiveClass?: string; + /** + * Additional class that will be added to thumbs swiper + * + * @default 'swiper-thumbs' + */ + thumbsContainerClass?: string; + /** + * When enabled multiple thumbnail slides may get activated + * + * @default true + */ + multipleActiveThumbs?: boolean; + /** + * Allows to set on which thumbs active slide from edge it should automatically move scroll thumbs. For example, if set to 1 and last visible thumb will be activated (1 from edge) it will auto scroll thumbs + + * + * @default 0 + */ + autoScrollOffset?: number; +} diff --git a/source/vendor/swiper-bundle/types/modules/virtual.d.ts b/source/vendor/swiper-bundle/types/modules/virtual.d.ts new file mode 100644 index 0000000..bcf27bd --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/virtual.d.ts @@ -0,0 +1,135 @@ +export interface VirtualMethods { + /** + * Object with cached slides HTML elements + */ + cache: object; + + /** + * Index of first rendered slide + */ + from: number; + + /** + * Index of last rendered slide + */ + to: number; + + /** + * Array with slide items passed by `virtual.slides` parameter + */ + slides: T[]; + + /* + * Methods + */ + + /** + * Append slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + appendSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Prepend slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + prependSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Remove specific slide or slides. `slideIndexes` can be a number with slide index to remove or array with indexes. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeSlide(slideIndexes: number[]): void; + + /** + * Remove all slides + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeAllSlides(): void; + + /** + * Update virtual slides state + */ + update(force: boolean): void; +} + +export interface VirtualEvents {} + +export interface VirtualData { + /** + * slides left/top offset in px + */ + offset: number; + /** + * index of first slide required to be rendered + */ + from: number; + /** + * index of last slide required to be rendered + */ + to: number; + /** + * array with slide items to be rendered + */ + slides: T[]; +} + +export interface VirtualOptions { + /** + * Whether the virtual slides are enabled + * + * @default false + */ + enabled?: boolean; + /** + * Array with slides + * + * @default [] + */ + slides?: T[]; + /** + * Enables DOM cache of rendering slides html elements. Once they are rendered they will be saved to cache and reused from it. + * + * @default true + */ + cache?: boolean; + /** + * Increases amount of pre-rendered slides before active slide + * + * @default 0 + */ + addSlidesBefore?: number; + /** + * Increases amount of pre-rendered slides after active slide + * + * @default 0 + */ + addSlidesAfter?: number; + /** + * Function to render slide. As an argument it accepts current slide item for `slides` array and index number of the current slide. Function must return an outer HTML of the swiper slide or slide HTML element. + * + * @default null + */ + renderSlide?: (slide: T, index: any) => any | null; + /** + * Function for external rendering (e.g. using some other library to handle DOM manipulations and state like React.js or Vue.js). As an argument it accepts `data` object with the following properties: + * + * - `offset` - slides left/top offset in px + * - `from` - index of first slide required to be rendered + * - `to` - index of last slide required to be rendered + * - `slides` - array with slide items to be rendered + * + * @default null + */ + renderExternal?: (data: VirtualData) => any | null; + /** + * When enabled (by default) it will update Swiper layout right after renderExternal called. Useful to disable and update swiper manually when used with render libraries that renders asynchronously + * + * @default true + */ + renderExternalUpdate?: boolean; +} diff --git a/source/vendor/swiper-bundle/types/modules/zoom.d.ts b/source/vendor/swiper-bundle/types/modules/zoom.d.ts new file mode 100644 index 0000000..658f5ba --- /dev/null +++ b/source/vendor/swiper-bundle/types/modules/zoom.d.ts @@ -0,0 +1,85 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ZoomMethods { + /** + * Whether the zoom module is enabled + */ + enabled: boolean; + + /** + * Current image scale ratio + */ + scale: number; + + /** + * Enable zoom module + */ + enable(): void; + + /** + * Disable zoom module + */ + disable(): void; + + /** + * Zoom in image of the currently active slide. Optionally accepts custom zoom ratio + */ + in(ratio?: number): void; + + /** + * Zoom out image of the currently active slide + */ + out(): void; + + /** + * Toggle image zoom of the currently active slide + */ + toggle(event?: MouseEvent | TouchEvent | PointerEvent): void; +} + +export interface ZoomEvents { + /** + * Event will be fired on zoom change + */ + zoomChange: (swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; +} + +export interface ZoomOptions { + /** + * When set to true, the image will not be scaled past 100% of its original size + * + * @default false + */ + limitToOriginalSize?: boolean; + /** + * Maximum image zoom multiplier + * + * @default 3 + */ + maxRatio?: number; + /** + * Minimal image zoom multiplier + * + * @default 1 + */ + minRatio?: number; + /** + * Enable/disable zoom-in by slide's double tap + * + * @default true + */ + toggle?: boolean; + /** + * CSS class name of zoom container + * + * @default 'swiper-zoom-container' + */ + containerClass?: string; + /** + * CSS class name of zoomed in container + * + * @default 'swiper-slide-zoomed' + + */ + zoomedSlideClass?: string; +} diff --git a/source/vendor/swiper-bundle/types/shared.d.ts b/source/vendor/swiper-bundle/types/shared.d.ts new file mode 100644 index 0000000..3e410c5 --- /dev/null +++ b/source/vendor/swiper-bundle/types/shared.d.ts @@ -0,0 +1,13 @@ +import type { Swiper } from './index.d.ts'; + +export interface CSSSelector extends String {} + +export type SwiperModule = (options: { + params: Swiper['params']; + swiper: Swiper; + extendParams: (obj: { [name: string]: any }) => void; + on: Swiper['on']; + once: Swiper['once']; + off: Swiper['off']; + emit: Swiper['emit']; +}) => void; diff --git a/source/vendor/swiper-bundle/types/swiper-class.d.ts b/source/vendor/swiper-bundle/types/swiper-class.d.ts new file mode 100644 index 0000000..213916d --- /dev/null +++ b/source/vendor/swiper-bundle/types/swiper-class.d.ts @@ -0,0 +1,492 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +import type { A11yMethods } from './modules/a11y.d.ts'; +import type { AutoplayMethods } from './modules/autoplay.d.ts'; +import type { ControllerMethods } from './modules/controller.d.ts'; +import type { CoverflowEffectMethods } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectMethods } from './modules/effect-cube.d.ts'; +import type { FadeEffectMethods } from './modules/effect-fade.d.ts'; +import type { FlipEffectMethods } from './modules/effect-flip.d.ts'; +import type { CreativeEffectMethods } from './modules/effect-creative.d.ts'; +import type { CardsEffectMethods } from './modules/effect-cards.d.ts'; +import type { HashNavigationMethods } from './modules/hash-navigation.d.ts'; +import type { HistoryMethods } from './modules/history.d.ts'; +import type { KeyboardMethods } from './modules/keyboard.d.ts'; +import type { MousewheelMethods } from './modules/mousewheel.d.ts'; +import type { NavigationMethods } from './modules/navigation.d.ts'; +import type { PaginationMethods } from './modules/pagination.d.ts'; +import type { ParallaxMethods } from './modules/parallax.d.ts'; +import type { ScrollbarMethods } from './modules/scrollbar.d.ts'; +import type { ThumbsMethods } from './modules/thumbs.d.ts'; +import type { VirtualMethods } from './modules/virtual.d.ts'; +import type { ZoomMethods } from './modules/zoom.d.ts'; +import type { FreeModeMethods } from './modules/free-mode.d.ts'; +import type { ManipulationMethods } from './modules/manipulation.d.ts'; + +interface SwiperClass { + /** Add event handler */ + on(event: E, handler: Events[E]): void; + /** Add event handler that will be removed after it was fired */ + once(event: E, handler: Events[E]): void; + /** Remove event handler */ + off(event: E, handler: Events[E]): void; + /** Remove all handlers for specified event */ + off(event: E): void; + /** Fire event on instance */ + emit(event: E, ...args: any[]): void; +} + +interface Swiper extends SwiperClass { + /** + * Object with passed initialization parameters + */ + params: SwiperOptions; + + /** + * Object with original initialization parameters + */ + originalParams: SwiperOptions; + + /** + * Slider container HTML element + */ + el: HTMLElement; + + /** + * Wrapper HTML element + */ + wrapperEl: HTMLElement; + + /** + * Array of slides HTML elements. To get specific slide HTMLElement use `swiper.slides[1]` + */ + slides: HTMLElement[]; + + /** + * !INTERNAL + */ + loopedSlides: number | null; + + /** + * Width of container + */ + width: number; + + /** + * Height of container + */ + height: number; + + /** + * Current value of wrapper translate + */ + translate: number; + + /** + * Current progress of wrapper translate (from 0 to 1) + */ + progress: number; + + /** + * Index number of currently active slide + * + * @note Note, that in loop mode active index value will be always shifted on a number of looped slides + */ + activeIndex: number; + + /** + * Index number of currently active slide considering rearranged slides in loop mode + */ + realIndex: number; + + /** + * Index number of previously active slide + */ + previousIndex: number; + + /** + * Index number of current snap in `snapGrid` + */ + snapIndex: number; + + /** + * Slides snap grid + */ + snapGrid: number[]; + + /** + * `true` if slider on most "left"/"top" position + */ + isBeginning: boolean; + + /** + * `true` if slider on most "right"/"bottom" position + */ + isEnd: boolean; + + /** + * `true` if slide is "locked" (by `watchOverflow`) and slides can not be, e.g. when amount of slides is less that slides per view + */ + isLocked: boolean; + + /** + * `true` if swiper is in transition + */ + animating: boolean; + + /** + * Object with the following touch event properties: + * + * - `swiper.touches.startX` + * - `swiper.touches.startY` + * - `swiper.touches.currentX` + * - `swiper.touches.currentY` + * - `swiper.touches.diff` + */ + touches: { + startX: number; + startY: number; + currentX: number; + currentY: number; + diff: number; + }; + + /** + * Index number of last clicked slide + */ + clickedIndex: number; + + /** + * Link to last clicked slide (HTMLElement) + */ + clickedSlide: HTMLElement; + + /** + * Disable / enable ability to slide to the next slides by assigning `false` / `true` to this property + */ + allowSlideNext: boolean; + + /** + * Disable / enable ability to slide to the previous slides by assigning `false` / `true` to this property + */ + allowSlidePrev: boolean; + + /** + * Disable / enable ability move slider by grabbing it with mouse or by touching it with finger (on touch screens) by assigning `false` / `true` to this property + */ + allowTouchMove: boolean; + + /** + * Direction of sliding + */ + swipeDirection: 'prev' | 'next'; + + /** + * !INTERNAL + */ + rtlTranslate: boolean; + + /** + * Disable Swiper (if it was enabled). When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + */ + disable(): void; + + /** + * Enable Swiper (if it was disabled) + * + */ + enable(): void; + + /** + * Set Swiper translate progress (from 0 to 1). Where 0 - its initial position (offset) on first slide, and 1 - its maximum position (offset) on last slide + * + * @param progress Swiper translate progress (from 0 to 1). + * @param speed Transition duration (in ms). + */ + setProgress(progress: number, speed?: number): void; + + /** + * Run transition to next slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideNext(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Run transition to previous slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slidePrev(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Run transition to the slide with index number equal to 'index' parameter for the + * duration equal to 'speed' parameter. + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideTo(index: number, speed?: number, runCallbacks?: boolean): boolean; + + /** + * Does the same as .slideTo but for the case when used with enabled loop. So this + * method will slide to slides with realIndex matching to passed index + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToLoop(index: number, speed?: number, runCallbacks?: boolean): Swiper; + + /** + * Reset swiper position to currently active slide for the duration equal to 'speed' + * parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideReset(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Reset swiper position to closest slide/snap point for the duration equal to 'speed' parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToClosest(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Get dynamically calculated amount of slides per view, useful only when slidesPerView set to `auto` + * + */ + slidesPerViewDynamic(): number; + + /** + * Force swiper to update its height (when autoHeight enabled) for the duration equal to + * 'speed' parameter + * + * @param speed Transition duration (in ms). + */ + updateAutoHeight(speed?: number): void; + + /** + * You should call it after you add/remove slides + * manually, or after you hide/show it, or do any + * custom DOM modifications with Swiper + * This method also includes subcall of the following + * methods which you can use separately: + */ + update(): void; + + /** + * recalculate size of swiper container + */ + updateSize(): void; + + /** + * recalculate number of slides and their offsets. Useful after you add/remove slides with JavaScript + */ + updateSlides(): void; + + /** + * recalculate swiper progress + */ + updateProgress(): void; + + /** + * update active/prev/next classes on slides and bullets + */ + updateSlidesClasses(): void; + + /** + * Changes slider direction from horizontal to vertical and back. + * + * @param direction New direction. If not specified, then will automatically changed to opposite direction + * @param needUpdate Will call swiper.update(). Default true + */ + changeDirection(direction?: 'horizontal' | 'vertical', needUpdate?: boolean): void; + + /** + * Changes slider language + * + * @param direction New direction. Should be `rtl` or `ltr` + */ + changeLanguageDirection(direction: 'rtl' | 'ltr'): void; + + /** + * Detach all events listeners + */ + detachEvents(): void; + + /** + * Attach all events listeners again + */ + attachEvents(): void; + + /** + * !INTERNAL + */ + loopCreate(): void; + + /** + * !INTERNAL + */ + loopDestroy(): void; + + /** + * Initialize slider + */ + init(el?: HTMLElement): Swiper; + + /** + * Destroy slider instance and detach all events listeners + * + * @param deleteInstance Set it to false (by default it is true) to not to delete Swiper instance + * @param cleanStyles Set it to true (by default it is true) and all custom styles will be removed from slides, wrapper and container. + * Useful if you need to destroy Swiper and to init again with new options or in different direction + */ + destroy(deleteInstance?: boolean, cleanStyles?: boolean): void; + + /** + * Set custom css3 transform's translate value for swiper wrapper + */ + setTranslate(translate: any): void; + + /** + * Get current value of swiper wrapper css3 transform translate + */ + getTranslate(): any; + + /** + * Animate custom css3 transform's translate value for swiper wrapper + * + * @param translate Translate value (in px) + * @param speed Transition duration (in ms) + * @param runCallbacks Set it to false (by default it is true) and transition will not produce transition events + * @param translateBounds Set it to false (by default it is true) and transition value can extend beyond min and max translate + * + */ + translateTo( + translate: number, + speed: number, + runCallbacks?: boolean, + translateBounds?: boolean, + ): any; + + /** + * Unset grab cursor + */ + unsetGrabCursor(): void; + + /** + * Set grab cursor + */ + setGrabCursor(): void; + + /** + * Add event listener that will be fired on all events + */ + onAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * Remove event listener that will be fired on all events + */ + offAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * !INTERNAL + */ + isHorizontal(): boolean; + + /** + * !INTERNAL + */ + getBreakpoint(breakpoints: SwiperOptions['breakpoints']): string; + + /** + * !INTERNAL + */ + setBreakpoint(): void; + + /** + * !INTERNAL + */ + currentBreakpoint: any; + + /** + * !INTERNAL + */ + destroyed: boolean; + + /** + * !INTERNAL + */ + modules: Array; + + a11y: A11yMethods; + autoplay: AutoplayMethods; + controller: ControllerMethods; + coverflowEffect: CoverflowEffectMethods; + cubeEffect: CubeEffectMethods; + fadeEffect: FadeEffectMethods; + flipEffect: FlipEffectMethods; + creativeEffect: CreativeEffectMethods; + cardsEffect: CardsEffectMethods; + hashNavigation: HashNavigationMethods; + history: HistoryMethods; + keyboard: KeyboardMethods; + mousewheel: MousewheelMethods; + navigation: NavigationMethods; + pagination: PaginationMethods; + parallax: ParallaxMethods; + scrollbar: ScrollbarMethods; + thumbs: ThumbsMethods; + virtual: VirtualMethods; + zoom: ZoomMethods; + freeMode: FreeModeMethods; +} + +interface Swiper extends ManipulationMethods {} + +declare class Swiper implements Swiper { + /** + * Constructs a new Swiper instance. + * + * @param container Where Swiper applies to. + * @param options Instance options. + */ + constructor(container: CSSSelector | HTMLElement, options?: SwiperOptions); + /** + * Installs modules on Swiper in runtime. + */ + static use(modules: SwiperModule[]): void; + + /** + * Swiper default options + */ + static defaults: SwiperOptions; + + /** + * Extend global Swiper defaults + */ + static extendDefaults(options: SwiperOptions): void; + + /** + * Object with global Swiper extended options + */ + static extendedDefaults: SwiperOptions; +} + +export default Swiper; diff --git a/source/vendor/swiper-bundle/types/swiper-events.d.ts b/source/vendor/swiper-bundle/types/swiper-events.d.ts new file mode 100644 index 0000000..4e6aaec --- /dev/null +++ b/source/vendor/swiper-bundle/types/swiper-events.d.ts @@ -0,0 +1,359 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type Swiper from './swiper-class.d.ts'; + +import type { A11yEvents } from './modules/a11y.d.ts'; +import type { AutoplayEvents } from './modules/autoplay.d.ts'; +import type { ControllerEvents } from './modules/controller.d.ts'; +import type { CoverflowEffectEvents } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectEvents } from './modules/effect-cube.d.ts'; +import type { FadeEffectEvents } from './modules/effect-fade.d.ts'; +import type { FlipEffectEvents } from './modules/effect-flip.d.ts'; +import type { CreativeEffectEvents } from './modules/effect-creative.d.ts'; +import type { CardsEffectEvents } from './modules/effect-cards.d.ts'; +import type { HashNavigationEvents } from './modules/hash-navigation.d.ts'; +import type { HistoryEvents } from './modules/history.d.ts'; +import type { KeyboardEvents } from './modules/keyboard.d.ts'; +import type { MousewheelEvents } from './modules/mousewheel.d.ts'; +import type { NavigationEvents } from './modules/navigation.d.ts'; +import type { PaginationEvents } from './modules/pagination.d.ts'; +import type { ParallaxEvents } from './modules/parallax.d.ts'; +import type { ScrollbarEvents } from './modules/scrollbar.d.ts'; +import type { ThumbsEvents } from './modules/thumbs.d.ts'; +import type { VirtualEvents } from './modules/virtual.d.ts'; +import type { ZoomEvents } from './modules/zoom.d.ts'; +import type { FreeModeEvents } from './modules/free-mode.d.ts'; + +export interface SwiperEvents { + // CORE_EVENTS_START + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: Swiper) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: Swiper) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: Swiper) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: Swiper, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: Swiper, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: Swiper, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: Swiper) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: Swiper) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: Swiper) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: Swiper) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: Swiper, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: Swiper, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: Swiper, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: Swiper) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: Swiper) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: Swiper) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: Swiper) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: Swiper) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: Swiper) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: Swiper) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: Swiper, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: Swiper) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: Swiper) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: Swiper) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: Swiper) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: Swiper) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: Swiper) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: Swiper, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: Swiper) => void; + // CORE_EVENTS_END +} + +interface SwiperEvents extends A11yEvents {} +interface SwiperEvents extends AutoplayEvents {} +interface SwiperEvents extends ControllerEvents {} +interface SwiperEvents extends CoverflowEffectEvents {} +interface SwiperEvents extends CubeEffectEvents {} +interface SwiperEvents extends FadeEffectEvents {} +interface SwiperEvents extends FlipEffectEvents {} +interface SwiperEvents extends CreativeEffectEvents {} +interface SwiperEvents extends CardsEffectEvents {} +interface SwiperEvents extends HashNavigationEvents {} +interface SwiperEvents extends HistoryEvents {} +interface SwiperEvents extends KeyboardEvents {} +interface SwiperEvents extends MousewheelEvents {} +interface SwiperEvents extends NavigationEvents {} +interface SwiperEvents extends PaginationEvents {} +interface SwiperEvents extends ParallaxEvents {} +interface SwiperEvents extends ScrollbarEvents {} +interface SwiperEvents extends ThumbsEvents {} +interface SwiperEvents extends VirtualEvents {} +interface SwiperEvents extends ZoomEvents {} +interface SwiperEvents extends FreeModeEvents {} diff --git a/source/vendor/swiper-bundle/types/swiper-options.d.ts b/source/vendor/swiper-bundle/types/swiper-options.d.ts new file mode 100644 index 0000000..7a97910 --- /dev/null +++ b/source/vendor/swiper-bundle/types/swiper-options.d.ts @@ -0,0 +1,1217 @@ +import type { A11yOptions } from './modules/a11y.d.ts'; +import type { AutoplayOptions } from './modules/autoplay.d.ts'; +import type { ControllerOptions } from './modules/controller.d.ts'; +import type { CoverflowEffectOptions } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectOptions } from './modules/effect-cube.d.ts'; +import type { FadeEffectOptions } from './modules/effect-fade.d.ts'; +import type { FlipEffectOptions } from './modules/effect-flip.d.ts'; +import type { CreativeEffectOptions } from './modules/effect-creative.d.ts'; +import type { CardsEffectOptions } from './modules/effect-cards.d.ts'; +import type { HashNavigationOptions } from './modules/hash-navigation.d.ts'; +import type { HistoryOptions } from './modules/history.d.ts'; +import type { KeyboardOptions } from './modules/keyboard.d.ts'; +import type { MousewheelOptions } from './modules/mousewheel.d.ts'; +import type { NavigationOptions } from './modules/navigation.d.ts'; +import type { PaginationOptions } from './modules/pagination.d.ts'; +import type { ParallaxOptions } from './modules/parallax.d.ts'; +import type { ScrollbarOptions } from './modules/scrollbar.d.ts'; +import type { ThumbsOptions } from './modules/thumbs.d.ts'; +import type { VirtualOptions } from './modules/virtual.d.ts'; +import type { ZoomOptions } from './modules/zoom.d.ts'; +import type { FreeModeOptions } from './modules/free-mode.d.ts'; +import type { GridOptions } from './modules/grid.d.ts'; + +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +export interface SwiperOptions { + /** + * Array with Swiper modules + * + * @example + * ```js + * import Swiper from 'swiper'; + * import { Navigation, Pagination } from 'swiper/modules'; + * + * const swiper = new Swiper('.swiper', { + * modules: [ Navigation, Pagination ], + * }); + * ``` + */ + modules?: SwiperModule[]; + /** + * Inject text styles to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStyles?: string[]; + /** + * Inject styles ``s to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStylesUrls?: string[]; + /** + * Whether Swiper should be initialised automatically when you create an instance. + * If disabled, then you need to init it manually by calling `swiper.init()` + * + * @default true + */ + init?: boolean; + + /** + * Whether Swiper initially enabled. When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + * @default true + */ + enabled?: boolean; + + /** + * Swiper will recalculate slides position on window resize (orientationchange) + * + * @default true + */ + updateOnWindowResize?: boolean; + + /** + * When enabled it will use ResizeObserver (if supported by browser) on swiper container to detect container resize (instead of watching for window resize) + * + * @default true + */ + resizeObserver?: boolean; + + /** + * Index number of initial slide. + * + * @default 0 + */ + initialSlide?: number; + + /** + * Can be `'horizontal'` or `'vertical'` (for vertical slider). + * + * @default 'horizontal' + */ + direction?: 'horizontal' | 'vertical'; + + /** + * When enabled, will swipe slides only forward (one-way) regardless of swipe direction + * + * @default false + */ + + oneWayMovement?: boolean; + + /** + * The name of the swiper element node name; used for detecting web component rendering + * + * @default 'SWIPER-CONTAINER' + */ + swiperElementNodeName?: string; + + /** + * Duration of transition between slides (in ms) + * + * @default 300 + */ + speed?: number; + + /** + * Enabled this option and plugin will set width/height on swiper wrapper equal to total size of all slides. + * Mostly should be used as compatibility fallback option for browser that don't support flexbox layout well + * + * @default false + */ + setWrapperSize?: boolean; + + /** + * Enabled this option and swiper will be operated as usual except it will not move, real translate values on wrapper will not be set. + * Useful when you may need to create custom slide transition + * + * @default false + */ + virtualTranslate?: boolean; + + /** + * Swiper width (in px). Parameter allows to force Swiper width. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + width?: number | null; + + /** + * Swiper height (in px). Parameter allows to force Swiper height. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + height?: number | null; + + /** + * Set to `true` and slider wrapper will adapt its height to the height of the currently active slide + * + * @default false + */ + autoHeight?: boolean; + + /** + * Set to `true` to round values of slides width and height to prevent blurry texts on usual + * resolution screens (if you have such) + * + * @default false + */ + roundLengths?: boolean; + + /** + * Set to `true` on Swiper for correct touch events interception. Use only on + * swipers that use same direction as the parent one + * + * @default false + */ + nested?: boolean; + + /** + * When enabled Swiper will automatically wrap slides with swiper-wrapper element, + * and will create required elements for navigation, pagination and scrollbar + * they are enabled (with their respective params object or with boolean `true`)) + * + * @default false + */ + createElements?: boolean; + + /** + * Event name prefix for all DOM events emitted by Swiper Element (web component) + * + * @default `swiper` + */ + eventsPrefix?: string; + + /** + * CSS selector for focusable elements. Swiping will be disabled on such elements if they are "focused" + * + * @default 'input, select, option, textarea, button, video, label' + */ + focusableElements?: string; + + /** + * If enabled (by default) and navigation elements' parameters passed as a string (like `".pagination"`) + * then Swiper will look for such elements through child elements first. + * Applies for pagination, prev/next buttons and scrollbar elements + * + * @default true + */ + uniqueNavElements?: boolean; + + /** + * Transition effect. Can be `'slide'`, `'fade'`, `'cube'`, `'coverflow'`, `'flip'`, `'creative'` or `'cards'` + * + * @default 'slide' + */ + effect?: 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip' | 'creative' | 'cards' | string; + + /** + * Fire Transition/SlideChange/Start/End events on swiper initialization. + * Such events will be fired on initialization in case of your initialSlide is not 0, or you use loop mode + * + * @default true + */ + runCallbacksOnInit?: boolean; + + /** + * When enabled Swiper will be disabled and hide navigation buttons on + * case there are not enough slides for sliding. + * + * @default true + */ + watchOverflow?: boolean; + + /** + * userAgent string. Required for browser/device detection when rendered on server-side + * + * @default null + */ + userAgent?: string | null; + + /** + * Required for active slide detection when rendered on server-side and enabled history + * + * @default null + */ + url?: string | null; + + /** + * Register event handlers + */ + on?: { + [event in keyof SwiperEvents]?: SwiperEvents[event]; + }; + + /** + * Add event listener that will be fired on all events + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * onAny(eventName, ...args) { + * console.log('Event: ', eventName); + * console.log('Event data: ', args); + * } + * }); + * ``` + */ + onAny?(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * When enabled it will use modern CSS Scroll Snap API. + * It doesn't support all of Swiper's features, but potentially should bring a much better performance in simple configurations. + * + * This is what is not supported when it is enabled: + * + * - Cube effect + * - `speed` parameter may not have no effect + * - All transition start/end related events (use `slideChange` instead) + * - `slidesPerGroup` has limited support + * - `simulateTouch` doesn't have effect and "dragging" with mouse doesn't work + * - `resistance` doesn't have any effect + * - `allowSlidePrev/Next` + * - `swipeHandler` + * + * In case if you use it with other effects, especially 3D effects, it is required to wrap slide's content with `
` element. And if you use any custom styles on slides (like background colors, border radius, border, etc.), they should be set on `swiper-slide-transform` element instead. + * + * @example + * ```html + *
+ *
+ *
+ * + *
+ * ... slide content ... + *
+ *
+ * ... + *
+ *
+ * + * ``` + * + * @default false + */ + cssMode?: boolean; + + // Slides grid + + /** + * Distance between slides in px. + * + * @default 0 + * + * @note If you use "margin" css property to the elements which go into Swiper in which you pass "spaceBetween" into, navigation might not work properly. + */ + spaceBetween?: number | string; + + /** + * Number of slides per view (slides visible at the same time on slider's container). + * @note `slidesPerView: 'auto'` is currently not compatible with multirow mode, when `grid.rows` > 1 + * + * @default 1 + */ + slidesPerView?: number | 'auto'; + + /** + * If total number of slides less than specified here value, then Swiper will enable `backface-visibility: hidden` on slide elements to reduce visual "flicker" in Safari. + * + * @note It is not recommended to enable it on large amount of slides as it will reduce performance + * + * @default 10 + */ + maxBackfaceHiddenSlides?: number; + + /** + * Set numbers of slides to define and enable group sliding. Useful to use with slidesPerView > 1 + * + * @default 1 + */ + slidesPerGroup?: number; + + /** + * The parameter works in the following way: If `slidesPerGroupSkip` equals `0` (default), no slides are excluded from grouping, and the resulting behaviour is the same as without this change. + * + * If `slidesPerGroupSkip` is equal or greater than `1` the first X slides are treated as single groups, whereas all following slides are grouped by the `slidesPerGroup` value. + * + * @default 0 + */ + slidesPerGroupSkip?: number; + + /** + * This param intended to be used only with `slidesPerView: 'auto'` and `slidesPerGroup: 1`. When enabled, it will skip all slides in view on `.slideNext()` & `.slidePrev()` methods calls, on Navigation "buttons" clicks and in autoplay. + * + * @default false + */ + slidesPerGroupAuto?: boolean; + + /** + * If `true`, then active slide will be centered, not always on the left side. + * + * @default false + */ + centeredSlides?: boolean; + + /** + * If `true`, then active slide will be centered without adding gaps at the beginning and end of slider. + * Required `centeredSlides: true`. Not intended to be used with `loop` or `pagination` + * + * @default false + */ + centeredSlidesBounds?: boolean; + + /** + * Add (in px) additional slide offset in the beginning of the container (before all slides) + * + * @default 0 + */ + slidesOffsetBefore?: number; + + /** + * Add (in px) additional slide offset in the end of the container (after all slides) + * + * @default 0 + */ + slidesOffsetAfter?: number; + + /** + * Normalize slide index. + * + * @default true + */ + normalizeSlideIndex?: boolean; + + /** + * When enabled it center slides if the amount of slides less than `slidesPerView`. Not intended to be used `loop` mode and `grid.rows` + * + * @default false + */ + centerInsufficientSlides?: boolean; + + /** + * This option may a little improve desktop usability. If `true`, user will see the "grab" cursor when hover on Swiper + * + * @default false + */ + grabCursor?: boolean; + + /** + * Target element to listen touch events on. Can be `'container'` (to listen for touch events on swiper) or `'wrapper'` + * (to listen for touch events on swiper-wrapper) + * + * @default 'wrapper' + */ + touchEventsTarget?: 'container' | 'wrapper'; + + /** + * Touch ratio + * + * @default 1 + */ + touchRatio?: number; + + /** + * Allowable angle (in degrees) to trigger touch move + * + * @default 45 + */ + touchAngle?: number; + + /** + * If `true`, Swiper will accept mouse events like touch events (click and drag to change slides) + * + * @default true + */ + simulateTouch?: boolean; + + /** + * Set to `false` if you want to disable short swipes + * + * @default true + */ + shortSwipes?: boolean; + + /** + * Set to `false` if you want to disable long swipes + * + * @default true + */ + longSwipes?: boolean; + + /** + * Ratio to trigger swipe to next/previous slide during long swipes + * + * @default 0.5 + */ + longSwipesRatio?: number; + + /** + * Minimal duration (in ms) to trigger swipe to next/previous slide during long swipes + * + * @default 300 + */ + longSwipesMs?: number; + + /** + * If disabled, then slider will be animated only when you release it, it will not move while you hold your finger on it + * + * @default true + */ + followFinger?: boolean; + + /** + * If `false`, then the only way to switch the slide is use of external API functions like slidePrev or slideNext + * + * @default true + */ + allowTouchMove?: boolean; + + /** + * Threshold value in px. If "touch distance" will be lower than this value then swiper will not move + * + * @default 5 + */ + threshold?: number; + + /** + * If disabled, `pointerdown` event won't be prevented + * + * @default true + */ + touchStartPreventDefault?: boolean; + + /** + * Force to always prevent default for `touchstart` (`pointerdown`) event + * + * @default false + */ + touchStartForcePreventDefault?: boolean; + + /** + * If enabled, then propagation of "touchmove" will be stopped + * + * @default false + */ + touchMoveStopPropagation?: boolean; + + /** + * Enable to release Swiper events for swipe-back work in app. If set to `'prevent'` then it will prevent system swipe-back navigation instead. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer (touch) events. + * + * @default false + */ + edgeSwipeDetection?: boolean | string; + + /** + * Area (in px) from left edge of the screen to release touch events for swipe-back in app + * + * @default 20 + */ + edgeSwipeThreshold?: number; + + /** + * Enable to release touch events on slider edge position (beginning, end) to allow for further page scrolling. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer events. Also `threshold` parameter must be set to `0` + * + * @default false + */ + touchReleaseOnEdges?: boolean; + + /** + * Passive event listeners will be used by default where possible to improve scrolling performance on mobile devices. + * But if you need to use `e.preventDefault` and you have conflict with it, then you should disable this parameter + * + * @default true + */ + passiveListeners?: boolean; + + // Touch Resistance + + /** + * Set to `false` if you want to disable resistant bounds + * + * @default true + */ + resistance?: boolean; + + /** + * This option allows you to control resistance ratio + * + * @default 0.85 + */ + resistanceRatio?: number; + + // Swiping / No swiping + /** + * When enabled it won't allow to change slides by swiping or navigation/pagination buttons during transition + * + * @default false + */ + preventInteractionOnTransition?: boolean; + + /** + * Set to `false` to disable swiping to previous slide direction (to left or top) + * + * @default true + */ + allowSlidePrev?: boolean; + + /** + * Set to `false` to disable swiping to next slide direction (to right or bottom) + * + * @default true + */ + allowSlideNext?: boolean; + + /** + * Enable/disable swiping on elements matched to class specified in `noSwipingClass` + * + * @default true + */ + noSwiping?: boolean; + + /** + * Specify `noSwiping`'s element css class + * + * @default 'swiper-no-swiping' + */ + noSwipingClass?: string; + + /** + * Can be used instead of `noSwipingClass` to specify elements to disable swiping on. + * For example `'input'` will disable swiping on all inputs + * + * @default + */ + noSwipingSelector?: string; + + /** + * String with CSS selector or HTML element of the container with pagination that will work as only available handler for swiping + * + * @default null + */ + swipeHandler?: CSSSelector | HTMLElement | null; + + // Clicks + /** + * Set to `true` to prevent accidental unwanted clicks on links during swiping + * + * @default true + */ + preventClicks?: boolean; + + /** + * Set to `true` to stop clicks event propagation on links during swiping + * + * @default true + */ + preventClicksPropagation?: boolean; + + /** + * Set to `true` and click on any slide will produce transition to this slide + * + * @default false + */ + slideToClickedSlide?: boolean; + + // Progress + /** + * Enable this feature to calculate each slides progress and visibility (slides in viewport will have additional visible class) + * + * @default false + */ + watchSlidesProgress?: boolean; + + /** + * Set to `true` to enable continuous loop mode + * + * Because of nature of how the loop mode works (it will rearrange slides), total number of slides must be: + * + * - more than or equal to `slidesPerView` + `slidesPerGroup` + * - even to `slidesPerGroup` (or use `loopAddBlankSlides` parameter) + * - even to `grid.rows` (or use `loopAddBlankSlides` parameter) + * + * @default false + * + */ + loop?: boolean; + + /** + * Automatically adds blank slides if you use Grid or `slidesPerGroup` and the total amount of slides is not even to `slidesPerGroup` or to `grid.rows` + * + * + * @default true + * + */ + loopAddBlankSlides?: boolean; + + /** + * Allows to increase amount of looped slides + * + * @default 0 + */ + loopAdditionalSlides?: number; + + /** + * If enabled then slideNext/Prev will do nothing while slider is animating in loop mode + * + * @default true + */ + loopPreventsSliding?: boolean; + + /** + * Set to `true` to enable "rewind" mode. When enabled, clicking "next" navigation button (or calling `.slideNext()`) when on last slide will slide back to the first slide. Clicking "prev" navigation button (or calling `.slidePrev()`) when on first slide will slide forward to the last slide. + * + * @default false + * + * @note Should not be used together with `loop` mode + */ + rewind?: boolean; + + /** + * Allows to set different parameter for different responsive breakpoints (screen sizes). Not all parameters can be changed in breakpoints, only those which do not require different layout and logic, like `slidesPerView`, `slidesPerGroup`, `spaceBetween`, `grid.rows`. Such parameters like `loop` and `effect` won't work + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * // Default parameters + * slidesPerView: 1, + * spaceBetween: 10, + * // Responsive breakpoints + * breakpoints: { + * // when window width is >= 320px + * 320: { + * slidesPerView: 2, + * spaceBetween: 20 + * }, + * // when window width is >= 480px + * 480: { + * slidesPerView: 3, + * spaceBetween: 30 + * }, + * // when window width is >= 640px + * 640: { + * slidesPerView: 4, + * spaceBetween: 40 + * } + * } + * }) + * ``` + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * slidesPerView: 1, + * spaceBetween: 10, + * // using "ratio" endpoints + * breakpoints: { + * '@0.75': { + * slidesPerView: 2, + * spaceBetween: 20, + * }, + * '@1.00': { + * slidesPerView: 3, + * spaceBetween: 40, + * }, + * '@1.50': { + * slidesPerView: 4, + * spaceBetween: 50, + * }, + * } + * }); + * ``` + */ + breakpoints?: { + [width: number]: SwiperOptions; + [ratio: string]: SwiperOptions; + }; + + /** + * Base for breakpoints (beta). Can be `window` or `container`. If set to `window` (by default) then breakpoint keys mean window width. If set to `container` then breakpoint keys treated as swiper container width + * + * @default 'window' + */ + breakpointsBase?: 'window' | 'container'; + + // Observer + /** + * Set to `true` to enable Mutation Observer on Swiper and its elements. In this case Swiper will be updated (reinitialized) each time if you change its style (like hide/show) or modify its child elements (like adding/removing slides) + * + * @default false + */ + observer?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper slide children elements + * + * @default false + */ + observeSlideChildren?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper parent elements + * + * @default false + */ + observeParents?: boolean; + + // Namespace + /** + * The beginning of the modifier CSS class that can be added to swiper container depending on different parameters + * + * @default 'swiper-' + */ + containerModifierClass?: string; + + /** + * CSS class name of slide + * + * @default 'swiper-slide' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideClass?: string; + + /** + * CSS class name of currently active slide + * + * @default 'swiper-slide-active' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideActiveClass?: string; + + /** + * CSS class name of currently/partially visible slide + * + * @default 'swiper-slide-visible' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideVisibleClass?: string; + + /** + * CSS class name of fully (when whole slide is in the viewport) visible slide + * + * @default 'swiper-slide-fully-visible' + * + * @note Not supported in Swiper React/Vue + */ + slideFullyVisibleClass?: string; + + /** + * CSS class name of the blank slide added by the loop mode (when `loopAddBlankSlides` is enabled) + * + * @default 'swiper-slide-blank' + * + * @note Not supported in Swiper React/Vue + */ + slideBlankClass?: string; + + /** + * CSS class name of slide which is right after currently active slide + * + * @default 'swiper-slide-next' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideNextClass?: string; + + /** + * CSS class name of slide which is right before currently active slide + * + * @default 'swiper-slide-prev' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slidePrevClass?: string; + + /** + * CSS class name of slides' wrapper + * + * @default 'swiper-wrapper' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + * + */ + wrapperClass?: string; + + /** + * CSS class name of lazy preloader + * + * @default 'swiper-lazy-preloader' + */ + lazyPreloaderClass?: string; + + /** + * Number of next and previous slides to preload. Only applicable if using lazy loading. + * + * @default 0 + */ + lazyPreloadPrevNext?: number; + + /** + * Object with a11y parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * a11y: { + * prevSlideMessage: 'Previous slide', + * nextSlideMessage: 'Next slide', + * }, + * }); + * ``` + */ + a11y?: A11yOptions; + + /** + * Object with autoplay parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + *}); + * ``` + */ + autoplay?: AutoplayOptions | boolean; + + /** + * Object with controller parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * controller: { + * inverse: true, + * }, + * }); + * ``` + */ + controller?: ControllerOptions; + + /** + * Object with Coverflow-effect parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'coverflow', + * coverflowEffect: { + * rotate: 30, + * slideShadows: false, + * }, + * }); + * ``` + */ + coverflowEffect?: CoverflowEffectOptions; + + /** + * Object with Cube-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cube', + * cubeEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + cubeEffect?: CubeEffectOptions; + + /** + * Object with Fade-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'fade', + * fadeEffect: { + * crossFade: true + * }, + * }); + * ``` + */ + fadeEffect?: FadeEffectOptions; + + /** + * Object with Flip-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'flip', + * flipEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + flipEffect?: FlipEffectOptions; + + /** + * Object with Creative-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'creative', + * creativeEffect: { + * prev: { + * // will set `translateZ(-400px)` on previous slides + * translate: [0, 0, -400], + * }, + * next: { + * // will set `translateX(100%)` on next slides + * translate: ['100%', 0, 0], + * }, + * }, + * }); + * ``` + */ + creativeEffect?: CreativeEffectOptions; + + /** + * Object with Cards-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cards', + * cardsEffect: { + * // ... + * }, + * }); + * ``` + */ + cardsEffect?: CardsEffectOptions; + + /** + * Enables hash url navigation to for slides. + * Object with hash navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * hashNavigation: { + * replaceState: true, + * }, + * }); + * ``` + */ + hashNavigation?: HashNavigationOptions | boolean; + + /** + * Enables history push state where every slide will have its own url. In this parameter you have to specify main slides url like `"slides"` and specify every slide url using `data-history` attribute. + * + * Object with history navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * history: { + * replaceState: true, + * }, + * }); + * ``` + * + * @example + * ```html + * + *
+ * ``` + */ + history?: HistoryOptions | boolean; + + /** + * Enables navigation through slides using keyboard. Object with keyboard parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * keyboard: { + * enabled: true, + * onlyInViewport: false, + * }, + * }); + * ``` + */ + keyboard?: KeyboardOptions | boolean; + + /** + * Enables navigation through slides using mouse wheel. Object with mousewheel parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * mousewheel: { + * invert: true, + * }, + * }); + * ``` + */ + mousewheel?: MousewheelOptions | boolean; + + /** + * Object with navigation parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * navigation: { + * nextEl: '.swiper-button-next', + * prevEl: '.swiper-button-prev', + * }, + * }); + * ``` + */ + navigation?: NavigationOptions | boolean; + + /** + * Object with pagination parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * pagination: { + * el: '.swiper-pagination', + * type: 'bullets', + * }, + * }); + * ``` + */ + pagination?: PaginationOptions | boolean; + + /** + * Object with parallax parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * parallax: true, + * }); + * ``` + */ + parallax?: ParallaxOptions | boolean; + + /** + * Object with scrollbar parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ + scrollbar?: ScrollbarOptions | boolean; + + /** + * Object with thumbs component parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * ... + * thumbs: { + * swiper: thumbsSwiper + * } + * }); + * ``` + */ + thumbs?: ThumbsOptions; + + /** + * Enables virtual slides functionality. Object with virtual slides parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * virtual: { + * slides: ['Slide 1', 'Slide 2', 'Slide 3', 'Slide 4', 'Slide 5'], + * }, + * }); + * ``` + */ + virtual?: VirtualOptions | boolean; + + /** + * Enables zooming functionality. Object with zoom parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * zoom: { + * maxRatio: 5, + * }, + * }); + * ``` + */ + zoom?: ZoomOptions | boolean; + + /** + * Enables free mode functionality. Object with free mode parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * freeMode: true, + * }); + * + * const swiper = new Swiper('.swiper', { + * freeMode: { + * enabled: true, + * sticky: true, + * }, + * }); + * ``` + */ + freeMode?: FreeModeOptions | boolean; + + /** + * Object with grid parameters to enable "multirow" slider. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * grid: { + * rows: 2, + * }, + * }); + * ``` + */ + grid?: GridOptions; + + /** + * !INTERNAL When enabled will emit "_containerClasses" and "_slideClass" events + */ + _emitClasses?: boolean; +} diff --git a/svgo.config.js b/svgo.config.js new file mode 100644 index 0000000..356b455 --- /dev/null +++ b/svgo.config.js @@ -0,0 +1,22 @@ +export default { + multipass: true, + plugins: [ + { + name: 'preset-default', + params: { + overrides: { + // customize options for plugins included in preset + convertPathData: { + floatPrecision: 2, + forceAbsolutePath: false, + utilizeAbsolute: false, + }, + // or disable plugins + removeViewBox: false, + }, + }, + }, + // enable builtin plugin not included in default preset + 'removeDimensions', + ], +};